我在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,所以让我们简单地说,通过使用force而不是使用CodeMemberField过滤声明行来向类中添加一些行?
也许像这样:
targetClass.Members.Add(new CodeSnippetStatement("var n = 2"));
感谢。
答案 0 :(得分: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);