I want to create an Enumeration using CodeDom API
. I have searched enough on the internet and I get results which are hardly of any use.
What I want to generate is
public enum bug_tracker_type
{
[Description("Bugzilla")]
Bugzilla,
[Description("Debbugs")]
Debbugs,
[Description("PHP Project Bugtracker")]
PHP_Project_Bugtracker,
[Description("Google Code")]
Google_Code
}
I used CodeTypeDeclaration
and set it's IsEnum
property as true, created a name, and set it's Attributes.
Now the biggest problem is how to populate the body?
I tried
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);
Though using this solution I can generate the Description attributes, the end of line would be ;
and not ,
Enum members are fields, so use CodeMemberField:
(In this simplified code, the Description will always be the same as the member name. In your real code, of course, these can be different.)
A little quirk you may notice is that CodeDom adds a comma after the last enum value:
This is permitted by the C# language, precisely in order to support generated-code scenarios like this, and will compile fine even if it looks a bit odd to the human reader.