是否可以仅传递没有参数的方法/函数(成员)的名称? 与Moq的功能类似:
Mock<Foo>fooMoq = new Mock<Foo>();
fooMoq.Setup(f => f.DummyMethod(It.IsAny<string>()));
但是没有It.IsAny():
Mock<Foo> fooMoq = new Mock<Foo>();
fooMoq.Setup(f => f.DummyMethod);
我的意思不是说起订量,而是总的来说。 谢谢。
编辑: 我要获取的是成员的名称,以便以后拦截对该方法的调用。这就是为什么我对知道将哪些参数传递给该方法不感兴趣,而只想知道它们想要拦截哪些方法。
答案 0 :(得分:0)
不,您不能从lambda参数的实例传递方法。最接近的方法是使用方法组转换。但是,您并未真正指定要实现的目标。
OP编辑后:
没有比这更简单的方法了,这就是为什么流行的框架(如MOQ)要求您传递所有必需的参数的原因。常用的方法之一就是传递一个只有空值(或值类型的默认值)的方法,如下所示:
fooMoq.Setup(f => f.DummyMethod(null,null,null));
还有另一种方法,它允许您不传递任何参数,但是会丢失对方法类型的静态类型检查,因此可以在此处传递任何方法名称。另外,读取它也会带来更多问题,因为您只有方法名称和类型,这在读取重载函数时可能会引起问题。
public class Program
{
public static void Main()
{
Setup<Test>(nameof(Test.DummyMethod));
}
public static void Setup<T>(string methodName)
{
}
}
public class Test
{
public void DummyMethod()
{
}
}