如何解决“将字符串转换为委托”

时间:2019-03-30 08:20:53

标签: c#

我正在编写一个测试代码片段(字符串),其中包含构造函数中的一个方法,该方法的参数为字符串和委托。我已经将委托放置在代码段中,但是在编译时,编译器无法将第二个参数识别为委托,而是将其识别为方法组。

我尝试将第二个参数强制转换为委托类型

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(第一个代码块)已被编译,编译器必须识别MethodDelegatedelegate,但不作为方法组

1 个答案:

答案 0 :(得分:0)

看这行:

protected void Invoke(string a, string b)

Invoke接受2个string而不是delegate的参数,而您像Invoke("SomeString", MethodDelegate);那样调用它-以一个stringAction<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
    }
}