如何获取传递参数的 lambda 中使用的方法名称
本文关键字:lambda 方法 参数 何获取 获取 | 更新日期: 2023-09-27 18:34:00
AssertManager.Record 中的参数正在运行,但我需要 lambda 操作中的值,即断言。所以我需要得到我使用的断言类型,我从一个类传递到另一个类。出于某种原因,我使用了lambda表达式,因此无法对其进行编辑。我只需要一个字符串类型,它说出我所做的任何类型的断言。在我的示例中,它应该向控制台输出"Assert.True"或"Assert.Equal"。
这是我使用的示例代码:
public class ClassTest
{
AssertManager = new AssertManager();
[Fact]
public void sampleTestAssert()
{
AssertManager.Record(() => Assert.True(true));
AssertManager.Record(() => Assert.Equal("Dog","Dog"));
}
}
public class AssertManager
{
public void Record(Action testMethod)
{
//is it possible to use testMethod to get the Assert inside the lambda in the
//Output what assert i did (ex. Assert.True, Assert.Equal )
}
}
如果您有解决方案,请告诉我。谢谢。
您需要
使用 Expression<Action>
而不是 Action
然后您可以反映 lambda...
请参阅 http://msdn.microsoft.com/en-us/library/bb397951.aspx