Вызов метода делегата с параметрами - PullRequest
1 голос
/ 01 февраля 2012

У меня есть несколько вызовов 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");
    }
}

Iхотелось бы что-то вроде следующего:

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 Ответ

3 голосов
/ 01 февраля 2012

Ты довольно близко. Попробуйте это:

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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...