CodeDom方法序列

时间:2012-05-09 13:48:46

标签: .net codedom

你能说我怎么能用CodeDOM(.net)做下面的声明吗?

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

感谢。

1 个答案:

答案 0 :(得分:2)

假设_myClass是您正在使用的班级中的一个字段,您可以通过引用该字段来构建图表。

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

然后,您将使用字符串值" MyNode"的原始表达式调用字段上的Configure方法。作为参数。

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")