C#回调参数

时间:2013-02-12 09:19:55

标签: c#

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

提前致谢

5 个答案:

答案 0 :(得分:2)

你的回调应该是:

public void callback(object value)

答案 1 :(得分:0)

您需要让参数传递object

答案 2 :(得分: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);

答案 3 :(得分:0)

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

public void someMethod(object parameter) { }

然后通过它,
或者你可以使用lambda:

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

答案 4 :(得分:0)

回调的签名应如下:

void MethodName(object parameter);

即使没有创建单独的方法,您也可以使用lambda expression

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