你能说我怎么能用CodeDOM(.net)做下面的声明吗?
_myClass.Configure("MyNode").Action("param1", "param2");
感谢。
答案 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")