如何将Expression <action>转换为Action </action>

时间:2014-12-17 03:29:29

标签: c# lambda expression action methodinfo

嘿,我想知道我是否可以将表达式转换为动作。 我需要使用Expression来获取lambda表达式的细节,同时我需要使用不同的方法执行它。我需要使用单个参数(Action或Expression)获取Expression和实际操作: 顺便说一句,我需要这个来获取我所做的断言的详细信息。 ex(Assert.true,Assert.False)

public void otherMethod()
{
  SomeMethod(() => Assert.Equals("Dog","Cat"));
}



 public void SomeMethod(Expression<Action> neededAction) //or public void SomeMethod(Action neededAction)
    {       

          //i need to run the neededAction and get the details whether what assert i did and the inputs i used for the assertion

    }

所以基本上我需要运行Action,我需要获取它的方法信息。 感谢〜

1 个答案:

答案 0 :(得分:1)

您需要在表达式上调用Compile()

// Compile it.
var actualNeededAction = neededAction.Compile();

// Execute it.
actualNeededAction();