C#回调参数

本文关键字:参数 回调 | 更新日期: 2023-09-27 17:58:50

C#有点生锈

我需要将回调传递给一个方法:

void InvokeScript(string jsScript, Action<object> resultCallback);

在我的课上,我创建了一个方法来传递给方法:

        public void callback(System.Action<object> resultCallback)
    { 
    }

错误消息1:

Resco.UI.IJavascriptBridge.InvokeScript(string, System.Action<object>)' has some invalid arguments

错误消息2:

cannot convert from 'method group' to 'System.Action<object>'

提前感谢

C#回调参数

您的回调应该是:

public void callback(object value)

您需要将传递的参数设为object

创建一个与Action<object>委托签名匹配的方法,例如

public void someMethod(object parameter) { }

然后传递,
或者你可以使用lambda:

InvokeScript("stuff", 
    param => { 
        Blah(param); 
        MoreBlah();
    });

尝试

Action<object> myCallBack = delegate
{
// do something here
};
    InvokeScript("some string", myCallBack);

方法委托需要采用object,并且不返回任何值。这就是Action<object>的意思。如我所示,您可以使用内置的Action委托,也可以创建一个新方法并将其作为委托传递:

public void MyMethod(object myParameter)
{
    // do something here.
}
InvokeScript("some string", MyMethod);

回调的签名应该如下:

void MethodName(object parameter);

即使不创建单独的方法,也可以使用lambda表达式:

InvokeScript(
    "some string",
    p =>
    {
        // the callback's logic
    });