是否可以使用System.CodeDom生成c#代码?
public MyClass() // ctor
{
Foo().Bar();
}
我只获得以下代码块
public MyClass() // ctor
{
Foo(Bar());
}
public MyClass() // ctor
{
Foo();
Bar();
}
答案 0 :(得分:3)
是的,当然。请参阅CodeMethodInvokeExpression
的构造函数:
public CodeMethodInvokeExpression(
CodeExpression targetObject,
string methodName,
params CodeExpression[] parameters
)
第一个参数targetObject
本身可以是任何表达式 1 ,其结果是一个对象,包括另一个方法调用表达式。因此,一旦您创建了表示调用Foo()
的表达式,您就会执行:
booInvokeExpression = new CodeMethodInvokeExpression(fooInvokeExpression,"Boo");
1 我最初在这句话中有狡猾的“Just”“,但我无法想到任何反例。如果你有一个,请随时在评论中告诉我