0

CodeDOM(.net)を使用して、以下のようなステートメントを実行する方法を教えてください。

_myClass.Configure("MyNode").Action("param1", "param2");

ありがとう。

4

1 に答える 1

2

_myClassが作業しているクラスのフィールドであると仮定すると、フィールドへの参照を作成してグラフを作成します。

CodeExpression fieldReferenceExpression = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass")

次に、文字列値「MyNode」のプリミティブ式をパラメーターとして使用して、フィールドでConfigureメソッドを呼び出します。

CodeExpression configureInvokeExpression = new CodeMethodInvokeExpression(
           new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass"),
           "Configure",
           new CodePrimitiveExpression("MyNode"))

最後に、その式を使用して、「param1」と「param2」のプリミティブ式をパラメーターとして使用して、Actionメソッドを呼び出します。

CodeExpression actionInvokeExpression = new CodeMethodInvokeExpression(
        new CodeMethodInvokeExpression(
           new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_myClass"),
           "Configure",
           new CodePrimitiveExpression("MyNode")),
        "Action", 
        new CodePrimitiveExpression("param1"),
        new CodePrimitiveExpression("param2"));

CSharpCodeProviderを使用すると、以下が生成されます。

this._myClass.Configure("MyNode").Action("param1", "param2")
于 2012-07-18T19:22:23.380 に答える