将对象传递给委托

时间:2015-10-09 16:44:19

标签: c# .net

我有一个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参数必须是可赋值的

  

委托有一些无效的论点

1 个答案:

答案 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);