Reputation: 50
Could you say how I can do statement like below using CodeDOM (.net)?
_myClass.Configure("MyNode").Action("param1", "param2");
Thanks.
Upvotes: 0
Views: 96
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