3

我正在编写一个实现 3rd 方接口的类。接口的功能之一接受“对象”类型的参数。

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

例子:

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”转换为非委托类型“对象”。您是否打算调用该方法?

我觉得我应该对委托做一些事情,但是由于我正在实现第 3 方接口,所以我无法更改函数的签名。

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

4

1 回答 1

4

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

myABCobject.DoSomething((Action)MySomething);

我很确定这会奏效...

事实上,我只是对其进行了测试,它确实如此 - 您可以将操作转换回 DoSomething 方法并调用它 - 例如

var newparameter = (Action) parameter;
 newparameter();
于 2013-11-07T01:24:35.147 回答