我正在编写一个测试代码片段(字符串),其中包含构造函数中的一个方法,该方法的参数为字符串和委托。我已经将委托放置在代码段中,但是在编译时,编译器无法将第二个参数识别为委托,而是将其识别为方法组。
我尝试将第二个参数强制转换为委托类型
class Test : AbstractClassA
{
public Test()
{
Invoke("SomeString", MethodDelegate);
}
private void MethodDelegate(string a, string b)
{
}
}
public abstract class AbstractClassA
{
protected void Invoke(string a, string b)
{
}
}
Invoke
在第二个参数中具有与MethodDelegate
相同的委托delegate
,而整个string
(第一个代码块)已被编译,编译器必须识别MethodDelegate
为delegate
,但不作为方法组
答案 0 :(得分:0)
看这行:
protected void Invoke(string a, string b)
Invoke
接受2个string
而不是delegate
的参数,而您像Invoke("SomeString", MethodDelegate);
那样调用它-以一个string
和Action<string, string>
作为第二个参数参数。可能您尝试过这样的事情:
class Test : AbstractClassA
{
public Test()
{
Invoke("SomeString", MethodDelegate); // note, we passing only 1 string as parameter, so I changed MethodDelegate to accept only 1 string too
}
private void MethodDelegate(string a)
{
}
}
public abstract class AbstractClassA {
protected void Invoke(string a, Action<string> b) // replaced second string with delegate
{
b(a); // call passed action with passed parameter
}
}