evgeny-i
evgeny-i

Reputation: 50

CodeDom sequence of methods

Could you say how I can do statement like below using CodeDOM (.net)?

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

Thanks.

Upvotes: 0

Views: 96

Answers (1)

bozalina
bozalina

Reputation: 89

Assuming _myClass is a field in the class you're working with, you'd build up the graph by making a reference to the field.

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

Then you'd invoke the Configure method on the field with a primitive expression of the string value "MyNode" as a parameter.

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

Finally, you'd use that expression to invoke the Action method, using primitive expressions of "param1" and "param2" as parameters.

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

Using a CSharpCodeProvider, this generates:

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

Upvotes: 2

Related Questions