无法转换为'方法组'到' System.Action< object>'错误
我创建了以下函数:
public void DelegatedCall(Action<Object> delegatedMethod)
并定义了以下方法
public void foo1(String str) { }
但是,当我尝试用foo1
调用DelegateCall
时:
DelegatedCall(foo1);
...我收到以下编译器错误:
Argument 1: cannot convert from 'method group' to 'System.Action<object>'
这个错误的原因是什么,我该如何纠正?不幸的是,铸造foo1
到Action
不是一种选择。
没有找到相关结果
已邀请:
2 个回复
你换
期望一个代表以任何
为参数。但是你传给
的函数
只能应付一个
的论点。因此,转换不是类型安全的,因此是不可能的。 输入参数是反式变量,但您的代码需要协方差。 (参见协方差和对比方差之间的差异。) 你可以使
通用:
......或者让任何代表:
但是,实施它是丑陋的,需要反思。它也不验证函数在编译时只有一个参数。
徐百晴墓斜
即使在4.0中,它也不会相信每个对象都是字符串。 请注意,如果它是
和
(即相反)它可能会起作用(在4.0中),因为每个字符串都是一个对象。