用Codedom生成C#自动属性

问题描述:

有没有办法用Codedom生成C#自动属性也许是我可以使用的其他一组libreries?用Codedom生成C#自动属性

。净)。因此,您不会在CodeDom中找到特定语言的语法糖。

不,这不是:C# CodeDom Automatic Property

看看到this article得到的CodeDOM应该是某种AST可以转化为多国语言(通常是C#和VB一些有用的例子

+0

所以在那里,我可以使用任何其他库? – 2010-01-23 10:39:17

+0

@Yassir创建一个支持字段并在getter/setter中使用它们真的不那么难。 – chakrit 2010-01-23 10:44:01

+0

你不需要;正如Marc Gravell所说,你需要自己实现它,因为它们只是一个编译器技巧(即.net编译器创建一个私有变量来保存自动属性值) – 2010-01-23 10:44:22

其实关于它的评论很容易使用CodeSnippetStatement是误导性的,因为CodeTypeDeclaration没有语句集合,您可以添加这些片段。

您可以为此使用CodeSnippetTypeMember类。

例如:

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); 

你可以这样做:根据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

这不起作用,因为它会生成两个空的'set'和'get'方法,这将导致编译错误。 'CodeSnippetTypeMember'(http://*.com/a/23876973/191148)是解决方案 – 2016-02-19 09:39:03