2010-01-23 21 views

Répondre

2

CodeDom est censé être une sorte de AST qui peut être converti en plusieurs langues (généralement C# et VB. NET). Par conséquent, vous ne trouverez pas les fonctionnalités qui sont le sucre syntaxique d'une langue spécifique dans CodeDom.

5

Non, ce n'est pas: C# CodeDom Automatic Property

Jetez un coup d'oeil dans this article pour obtenir quelques exemples utiles

+0

donc il d'autres bibliothèques que je peux utiliser? –

+0

@Yassir Ce n'est vraiment pas si difficile de créer un backing field et de l'utiliser dans le getter/setter. – chakrit

+0

vous n'avez pas besoin; Comme l'a dit Marc Gravell, vous devez l'implémenter vous-même, car ce n'est qu'un compilateur (ie le compilateur .net crée une variable privée pour contenir la valeur de votre propriété automatique) –

1

En fait, les commentaires sur le fait qu'il soit facile d'utiliser un CodeSnippetStatement sont trompeurs car CodeTypeDeclaration n'a aucune collection d'instructions à laquelle vous pouvez ajouter ces extraits.

0

Vous pouvez utiliser la classe CodeSnippetTypeMember à cette fin.

Par exemple:

CodeTypeDeclaration newType = new CodeTypeDeclaration("TestType"); 
    CodeSnippetTypeMember snippet = new CodeSnippetTypeMember(); 
    snippet.Comments.Add(new CodeCommentStatement("this is integer property", true)); 
    snippet.Text="public int IntergerProperty { get; set; }"; 
    newType.Members.Add(snippet); 
0

Vous pouvez faire ceci: Selon How to: Create a Class Using CodeDOM

 // Declare the ID Property. 
     CodeMemberProperty IDProperty = new CodeMemberProperty(); 
     IDProperty.Attributes = MemberAttributes.Public; 
     IDProperty.Name = "Id"; 
     IDProperty.HasGet = true; 
     IDProperty.HasSet = true; 
     IDProperty.Type = new CodeTypeReference(typeof(System.Int16)); 
     IDProperty.Comments.Add(new CodeCommentStatement(
     "Id is identity")); 
     targetClass.Members.Add(IDProperty); 
+0

Cela ne fonctionne pas, car il génère deux méthodes' set' et 'get' vides qui résulteront dans la compilation des erreurs. Le 'CodeSnippetTypeMember' (http://stackoverflow.com/a/23876973/191148) est la solution –