2010-01-23 11 views

Antwort

2

CodeDom soll eine Art AST sein, die in mehrere Sprachen umgewandelt werden kann (in der Regel C# und VB. NETZ). Daher werden Sie in CodeDom keine Features finden, die syntaktischer Zucker einer bestimmten Sprache sind.

5

Nein, es ist nicht: C# CodeDom Automatic Property

Werfen Sie einen Blick in this article einige nützliche Beispiele zu bekommen

+0

so gibt es andere Bibliotheken, die ich verwenden kann? –

+0

@Yassir Es ist wirklich nicht so schwer, ein Hintergrundfeld zu erstellen und sie in Getter/Setter zu verwenden. – chakrit

+0

brauchst du nicht; wie Marc Gravell sagte, müssen Sie es selbst implementieren, da sie nur ein Compiler-Trick sind (dh .net Compiler erstellt eine private Variable, um Ihre automatische Eigenschaft Wert zu halten) –

1

Tatsächlich sind die Kommentare darüber, dass es einfach ist, ein CodeSnippetStatement zu verwenden, irreführend, da CodeTypeDeclaration keine Anweisungsauflistung hat, zu der Sie diese Ausschnitte hinzufügen können.

0

Sie können die CodeSnippetTypeMember-Klasse für diesen Zweck verwenden.

Zum Beispiel:

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

Sie können dies tun: Nach 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

Dies funktioniert nicht, da es zwei leere' set' und 'get' Methoden erzeugt, die resultieren beim Kompilieren von Fehlern. Der 'CodeSnippetTypeMember' (http://stackoverflow.com/a/23876973/191148) ist die Lösung –

Verwandte Themen