我有一个API调用函数。我想通过该函数将对象传递给我的委托方法,以便我可以灵活地显示成功/错误消息。
如果我想去那里,这个对象可以是Label,一个字符串,甚至可能是JSON。
public delegate void ifItWorks(theParameter[] delegateParms,
ref object delegateObject);
public delegate void ifItThrows(theParameter[] delegateParms,
ref object delegateObject);
public static void apiCall(string yourCredentials,
theParameter[] yourParms, ifItWorks sendSuccess, ifItThrows sendAlert,
ref object yourObject)
如何使这项工作?我正在与编译器斗争以解决这个问题。
我得到的常见错误是
ref或out参数必须是可赋值的
或
委托有一些无效的论点
答案 0 :(得分:1)
您的API方法可以忽略委托所需的任何内容,并让方法的调用者使用闭包来捕获他们需要的任何对象。
public static void apiCall(string yourCredentials, Action sendSuccess, Action sendAlert)
{
try
{
DoSomething();
sendSuccess()
}
catch
{
sendAlert();
}
}
然后来电者可以写:
var someObject = CreateAnObjectINeed();
apiCall(credentials, () => DoSomething(someObject), () => HandleError(someObject);