用CodeTypeDeclaration创建一个类,并向其中添加成员



我在CodeTypeDeclaration的帮助下像这样声明一个类:

CodeTypeDeclaration targetClass = new CodeTypeDeclaration(sType);

可以添加一个构造函数:

 CodeConstructor constructor = new CodeConstructor();
 constructor.Attributes = MemberAttributes.Public;

或成员字段:

 CodeMemberField myField = new CodeMemberField();
 myField.Name = fieldName;
 myField.Type = new CodeTypeReference(fieldType);
 targetClass.Members.Add(myField);

但是我试图添加任何类型的行,例如常量声明:

const addressFilteresErrorCounters: UInt32 = 0x0000AE77;

我可以不使用CodeMemberField做到这一点吗?也许我可以在类中添加一个CodeSnippetStatement,所以让我们简单地说,通过使用强制添加一些行到类中,而不是用CodeMemberField过滤声明行?

可能是这样的:

    targetClass.Members.Add(new CodeSnippetStatement("var n = 2"));

谢谢。

不能直接将CodeSnippetStatement添加到类中。但是,您可以将它们添加到CodeMemberMethod中,例如:

CodeMemberMethod method = new CodeMemberMethod();
method.Name = "DoSomething";
method.Attributes = MemberAttributes.Public | MemberAttributes.Final;
method.Statements.Add(new CodeSnippetStatement("var n = 2;"));

虽然您不需要诉诸CodeSnippetStatement来添加常数。你可以使用:

CodeTypeDeclaration exampleClass = new CodeTypeDeclaration("GeneratedClass");
CodeMemberField constant = new CodeMemberField(new CodeTypeReference(typeof(System.UInt32)), "addressFilteresErrorCounters");
constant.Attributes = MemberAttributes.Const;
constant.InitExpression = new CodePrimitiveExpression(0x0000AE77);
exampleClass.Members.Add(constant);

最新更新