System.CodeDom是否可以进行链式方法调用?

时间:2014-03-03 14:19:57

标签: c# code-generation codedom

是否可以使用System.CodeDom生成c#代码?

public MyClass() // ctor
{
    Foo().Bar();
}

我只获得以下代码块

public MyClass() // ctor
{
    Foo(Bar());
}


public MyClass() // ctor
{
    Foo();
    Bar();
}

1 个答案:

答案 0 :(得分:3)

是的,当然。请参阅CodeMethodInvokeExpression的构造函数:

public CodeMethodInvokeExpression(
    CodeExpression targetObject,
    string methodName,
    params CodeExpression[] parameters
)

第一个参数targetObject本身可以是任何表达式 1 ,其结果是一个对象,包括另一个方法调用表达式。因此,一旦您创建了表示调用Foo()的表达式,您就会执行:

booInvokeExpression = new CodeMethodInvokeExpression(fooInvokeExpression,"Boo");

1 我最初在这句话中有狡猾的“Just”“,但我无法想到任何反例。如果你有一个,请随时在评论中告诉我