2010-01-23 16 views

Respuesta

2

CodeDom se supone que debe haber algún tipo de AST que puede ser convertido a múltiples idiomas (normalmente C# y VB. RED). Por lo tanto, no encontrará características que sean azúcar sintáctica de un idioma específico en CodeDom.

5

No, no lo es: C# CodeDom Automatic Property

echar un vistazo a this article para obtener algunos ejemplos útiles

+0

así ¿hay otras bibliotecas que puedo usar? –

+0

@Yassir Realmente no es tan difícil crear un campo de respaldo y usarlos en getter/setter. – chakrit

+0

que no necesita; como dijo Marc Gravell, debes implementarlo tú mismo, ya que son solo un truco de compilación (es decir, el compilador .net crea una variable privada para mantener tu valor de propiedad automático) –

1

En realidad, los comentarios acerca de que es fácil usar un CodeSnippetStatement son engañosos porque CodeTypeDeclaration no tiene una colección de sentencias a las que pueda agregar esos fragmentos.

0

Puede usar la clase CodeSnippetTypeMember para ese fin.

Por ejemplo:

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

usted puede hacer esto: De acuerdo con 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

Esto no funciona, ya que genera dos métodos vacíos' set' y 'get' que darán como resultado en la compilación de errores. El 'CodeSnippetTypeMember' (http://stackoverflow.com/a/23876973/191148) es la solución –

Cuestiones relacionadas