如何将方法作为参数传递而不在.NET中声明委托

如何将方法作为参数传递而不在.NET中声明委托,.net,parameters,methods,delegates,.net,Parameters,Methods,Delegates,无论我如何尝试,我都无法在不声明委托的情况下模仿Rhino Mock的干净语法 例如: Expect.Call(service.HelloWorld("Thanks")) 你知道怎么做吗 谢谢。使用3.5中的语法,您可以得到类似的语法 public void Call(Action action) { action(); } Expect.Call(() => service.HelloWorld("Thanks")); 是一个模拟框架,它使用Lambda语法进行模拟 var

无论我如何尝试,我都无法在不声明委托的情况下模仿Rhino Mock的干净语法

例如:

Expect.Call(service.HelloWorld("Thanks"))
你知道怎么做吗

谢谢。

使用3.5中的语法,您可以得到类似的语法

public void Call(Action action)
{
    action();
}

Expect.Call(() => service.HelloWorld("Thanks"));
是一个模拟框架,它使用Lambda语法进行模拟

var mock = new Mock<IService>();
mock.Setup(service => service.HelloWorld("Thanks")).Returns(42);
var mock=new mock();
mock.Setup(service=>service.HelloWorld(“谢谢”)).Returns(42);

您可以使用更新版本的.NET中提供的操作委托

void Execute(Action action) {
    action();
}

void Test() {
    Execute(() => Console.WriteLine("Hello World!"));
}

在Rhino Mock中,它实际上是在调用该方法。该对象当时处于设置模式,当您调用它时,它正在记录参数并设置期望值。这就是为什么您可以摆脱委托语法。不幸的是,在许多其他情况下,这是不可能的