使用相同的代表签名参数和无参数方法

时间:2011-12-15 13:55:16

标签: c# .net c#-4.0

我有一个方法,它接受具有参数

的方法委托
 public delegate void RunOperation(object o );
  public void Abort(RunOperation operationToRun, object obj)
  {
  }
  public void AllMessages()
  {
  }

是否可以将AllMessage()作为委托传递给Abort()?

我不想为无参数方法创建任何新的delgate。

由于

2 个答案:

答案 0 :(得分:2)

不,是的。

你可以这样:

Abort(_ => AllMessages(), null);

但是你只是创建另一个调用AllMessages并且不使用object参数的方法。

答案 1 :(得分:0)

我会用这种方式解决它:

public void Abort(Action operationToRun, object obj)
{

}
public void Abort(Action<object> operationToRun, object obj)
{

}
public void AllMessages()
{

} 

<强>解释

为Abort方法重载。第一种方法采用不带参数的动作,第二种方法采用一个参数进行动作。因此,您可以使用无参数方法和带有对象参数的方法调用Abort。