gpt4 book ai didi

c# - 将函数(委托(delegate)?)传递给期望对象作为参数的函数

转载 作者:行者123 更新时间:2023-11-30 15:31:59 26 4
gpt4 key购买 nike

我正在编写一个实现第 3 方接口(interface)的类。该接口(interface)的其中一个函数接受“对象”类型的参数。

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

例子:

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)类型'目的'。您是否打算调用该方法?

我觉得我应该和委托(delegate)一起做点什么,但由于我正在实现第 3 方接口(interface),我无法更改函数的签名。

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

最佳答案

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

myABCobject.DoSomething((Action)MySomething);

我很确定这会奏效...

事实上,我刚刚测试了它,它的确如此——您可以将操作转换回 DoSomething 方法并调用它——例如

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

关于c# - 将函数(委托(delegate)?)传递给期望对象作为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com