Je souhaite créer une énumération à l'aide de CodeDom API
. J'ai assez cherché sur Internet et j'ai des résultats qui ne sont guère utiles.Création d'une énumération à l'aide du CodeDom de .NET
Ce que je veux générer est
public enum bug_tracker_type
{
[Description("Bugzilla")]
Bugzilla,
[Description("Debbugs")]
Debbugs,
[Description("PHP Project Bugtracker")]
PHP_Project_Bugtracker,
[Description("Google Code")]
Google_Code
}
J'utilisé CodeTypeDeclaration
et placèrent est IsEnum
propriété comme vrai, a créé un nom, et définissez ses attributs.
Maintenant, le plus gros problème est de savoir comment peupler le corps?
J'ai essayé
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);
Bien que l'utilisation de cette solution que je peux générer les attributs de description, la fin de la ligne serait ;
et non ,
Bien placé - il n'est pas particulièrement évident que les enums sont en fait un type de CodeMemberField. Informations utiles dans d'autres contextes! –
D'accord, très joliment mis. Le fait que les valeurs d'une énumération soient des champs provient probablement de la façon dont elles sont réellement stockées dans le binaire .Net, sous la forme d'un ensemble de champs statiques avec une valeur constante. –