Добавьте CodeCommentStatement в CodeMemberProperty при создании кода C# с помощью CodeDOM

Кто-нибудь знает, как добавить CodeCommentStatement в CodeMemberProperty при создании кода С# с помощью CodeDOM?

Я старался:

var docStart = new CodeCommentStatement("<summary>", true);
var docContent = new CodeCommentStatement("The description of property", true);
var docEnd = new CodeCommentStatement("</summary>", true);

var property = new CodeMemberProperty {
    Name = name,
    HasGet = true,
    Attributes = MemberAttributes.Public | MemberAttributes.Static,
    Type = new CodeTypeReference(typeof(byte[]))    
};

var documentation = new CodeCommentStatementCollection { docStart, docContent, docEnd}
property.Comments = new CodeCommentStatementCollection(documentation);

Но свойство комментариев не установлено...

введите здесь описание изображения

Есть ли обходной путь?


person mihai    schedule 25.04.2014    source источник


Ответы (1)


Я бы предложил добавить элементы в существующий CodeCommentStatementCollection вместо создания нового:

CodeCommentStatement[] documentation = { docStart, docContent, docEnd}
property.Comments.AddRange(documentation);

Коллекция предоставляет общие методы добавления: Добавить, AddRange для массива, AddRange для CodeCommentStatementCollection.

Как указал @svick в комментариях, вы также можете присвоить значение при создании экземпляра объекта, например.

var property = new CodeMemberProperty {
                   // Other initialization values
                   Comments = { docStart, docContent, docEnd } }

Если вам интересно, почему и как это работает со свойством только для чтения, см. этот вопрос и ответ на него.

person Markus    schedule 25.04.2014
comment
И вы также можете сделать это в выражении создания объекта: new CodeMemberProperty { Comments = { docStart, … } }. - person svick; 27.04.2014
comment
@svick: Спасибо за ваше дополнение. Мне потребовалось некоторое время, чтобы понять, как это работает со свойством только для чтения — сегодня я определенно узнал что-то новое. Я обновил ответ. - person Markus; 27.04.2014
comment
Спасибо @Markus и @svick! - person mihai; 29.04.2014