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>'
提前感谢
您的回调应该是:
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
});