2010-01-23 113 views

回答

2

。淨)。因此,您不會在CodeDom中找到特定語言的語法糖。

5

不,這不是: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

1

其實關於它的評論很容易使用CodeSnippetStatement是誤導性的,因爲CodeTypeDeclaration沒有語句集合,您可以添加這些片段。

0

您可以爲此使用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); 
0

你可以這樣做:根據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://stackoverflow.com/a/23876973/191148)是解決方案 – 2016-02-19 09:39:03