3

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>'

提前致谢

4

5 回答 5

2

您的回调应该是:

public void callback(object value)
于 2013-02-12T09:23:54.770 回答
0

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

于 2013-02-12T09:23:43.643 回答
0

尝试

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);
于 2013-02-12T09:25:45.277 回答
0

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

public void someMethod(object parameter) { }

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

InvokeScript("stuff", 
    param => { 
        Blah(param); 
        MoreBlah();
    });
于 2013-02-12T09:26:20.103 回答
0

回调的签名应该如下:

void MethodName(object parameter);

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

InvokeScript(
    "some string",
    p =>
    {
        // the callback's logic
    });
于 2013-02-12T09:29:05.947 回答