Я хочу создать перечисление, используя CodeDom API
. Я обыскал достаточно в Интернете, и я получаю результаты, которые вряд ли будут полезны.создание перечисления с использованием .NET CodeDom
То, что я хочу, чтобы произвести это
public enum bug_tracker_type
{
[Description("Bugzilla")]
Bugzilla,
[Description("Debbugs")]
Debbugs,
[Description("PHP Project Bugtracker")]
PHP_Project_Bugtracker,
[Description("Google Code")]
Google_Code
}
Я использовал CodeTypeDeclaration
и установить это свойство IsEnum
как истинное, созданное имя, и установить его атрибуты.
Теперь самая большая проблема заключается в том, как заполнить тело?
Я попытался
CodeTypeMember mem = new CodeTypeMember();
mem.Name = WadlSharpUtils.CreateIdentifier(discreteValue.value);
mem.CustomAttributes.Add(new CodeAttributeDeclaration(discreteValue.value));
// enumCandidate is an instance of CodeTypeDeclaration
enumCandidate.Members.Add(mem);
Хотя с помощью этого решения я могу генерировать Описание атрибутов, конец строки будет ;
и не ,
членов
Красиво поставлено - не особо очевидно, что перечисления на самом деле являются типами CodeMemberField. Полезная информация в других контекстах! –
Согласен, очень красиво положить. Тот факт, что значения для перечисления являются полями, вероятно, связан с тем, как они фактически хранятся в двоичном формате .Net, как набор статических полей с постоянным значением. –