Последовательность методов CodeDom

Не могли бы вы сказать, как я могу сделать оператор, как показано ниже, используя CodeDOM (.net)?

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

Спасибо.


person evgeny-i    schedule 09.05.2012    source источник


Ответы (1)


Предполагая, что _myClass является полем в классе, с которым вы работаете, вы должны построить график, сделав ссылку на поле.

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

Затем вы вызовете метод Configure для поля с примитивным выражением строкового значения «MyNode» в качестве параметра.

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

Наконец, вы можете использовать это выражение для вызова метода Action, используя примитивные выражения «param1» и «param2» в качестве параметров.

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")
person bozalina    schedule 18.07.2012