1

私は次のような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で宣言行をフィルタリングせずに、forceを使用してクラスに行を追加しますか?

多分このようなsmth:

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

ありがとう。

4

1 に答える 1

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);
于 2014-04-09T12:15:46.710 に答える