委托具有参数的方法调用

时间:2012-02-01 04:52:55

标签: c# generics delegates

我有很多WCF调用,我希望它们周围有try catch。我没有复制try catch的同一块,而是委托函数调用。

这是我的示例原始功能(缩减);

public DTO_Echo_Response SendEcho(DTO_Echo_Request request)
{
    try
    {
        return Proxy.SendEcho(request);
    }
    catch (System.ServiceModel.CommunicationException)
    {
        throw new Communication_Error("Communication Error");
    }
}

我想要以下内容:

public DTO_Echo_Response SendEcho(DTO_Echo_Request request)
{
    // invoke Process(Proxy.SendEcho(request));
}

public _DTO_BaseResponse Process(Func myFunction)
{
    try
    {
        return myFunction();
    }
    catch (System.ServiceModel.CommunicationException)
    {
        throw new Communication_Error("Communication Error");
    }
}

我访问过很多文章,并尝试了很多不同的东西。

谢谢

1 个答案:

答案 0 :(得分:3)

你非常接近。试试这个:

public DTO_Echo_Response SendEcho(DTO_Echo_Request request)
{
    return Process(() => Proxy.SendEcho(request));
}

public TResult Process<TResult>(Func<TResult> myFunction)
{
    try
    {
        return myFunction();
    }
    catch (System.ServiceModel.CommunicationException)
    {
        throw new Communication_Error("Communication Error");
    }
}