gpt4 book ai didi

c# - 无法将方法组转换为操作

转载 作者:行者123 更新时间:2023-12-05 01:04:34 27 4
gpt4 key购买 nike

我被这个错误困扰,但不知道如何解决它。

我正在尝试将方法作为参数传递给另一个函数作为操作。我有一个定义了两种方法的接口(interface):

//ISegment interface
void SetNodeA(in INode node);
void SetNodeB(in INode node);

接下来我创建一个段,我想将此方法传递给另一个函数:

ISegment segment = GetSegment();
Execute(start, segment.SetNodeA);
Execute(end, segment.SetNodeB);

我的执行函数如下所示:

void Execute(in EndPoint point, in Action<INode> fnc)
{
Verify(segment);
Verify(point.Node);
fnc?.Invoke(point.Node); //set the node
}

问题是我得到这个错误:

Argument 2: cannot convert from 'method group' to 'in Action'

不知道这里的方法组是什么意思或如何修复它。

最佳答案

问题是您的 SetNodeASetNodeB方法有 in参数 你试图通过 Action<T> 调用它们,支持in , out , 或 ref参数。

如果您需要继续使用in对于这些方法,您可以通过创建自定义委托(delegate)类型并使用它而不是 Action<T> 来实现。 :

public delegate void ActionWithInParam<T>(in T node);

那么,你的 Execute方法是这样的:

void Execute(in EndPoint point, ActionWithInParam<INode> fnc)
{
Verify(segment);
Verify(point.Node);
fnc?.Invoke(point.Node); //set the node
}

关于c# - 无法将方法组转换为操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71975316/

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