我正在编写一个实现第三方界面的类。接口的一个功能接受“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。
答案 0 :(得分:4)
尝试将您的参数转换为对DoSomething的调用 - 例如
myABCobject.DoSomething((Action)MySomething);
我很确定它会起作用......
实际上我只是对它进行了测试,确实如此 - 您可以在DoSomething方法中将操作强制转换并调用它 - 例如。
var newparameter = (Action) parameter;
newparameter();