传递函数(委托?)以期望对象作为参数

时间:2013-11-07 01:12:13

标签: c# delegates

我正在编写一个实现第三方界面的类。接口的一个功能接受“object”类型的参数。

在函数中,我需要调用一个我想要作为object参数传递给函数的函数,但是我无法让它工作。

示例:

public class ABC : Ixyz
{
   ...
   public void DoSomething(object parameter);
   {
      // Here I will execute the function passed in
   }
   ...
}

public void MySomething()
{
   ...
}

public void SomeFunction()
{
   ABC myABCobject = new ABC();

   myABCobject.DoSomething(MySomething);
}

当我尝试编译时,我收到以下错误:

无法将方法组“MySomething”转换为非委托类型 '宾语'。你打算调用这个方法吗?

我觉得我应该与代表做一些事情,但由于我正在实现第三方界面,我无法更改该功能的签名。

我可以以某种方式传递对此函数的引用,它期待一个“对象”吗?我认为我可以,因为Delegate继承自Object。

1 个答案:

答案 0 :(得分:4)

尝试将您的参数转换为对DoSomething的调用 - 例如

myABCobject.DoSomething((Action)MySomething);

我很确定它会起作用......

实际上我只是对它进行了测试,确实如此 - 您可以在DoSomething方法中将操作强制转换并调用它 - 例如。

var newparameter = (Action) parameter;
 newparameter();