Как обернуть все результаты EndPoint в OperationResult? - PullRequest
0 голосов
/ 29 декабря 2010

Я хочу обернуть каждый результат из одной службы Wcf в моем приложении в что-то вроде

public class OperationResult{
  public string Status;
  public string Data;
}

даже если мой контракт выглядит как

[ServiceContract]
internal interface ITest
{
    [OperationContract,
     WebGet(
         RequestFormat = WebMessageFormat.Json,
         ResponseFormat = WebMessageFormat.Json)]
    MyDc EchoDc(MyDc input);
}

Из того, что я прочитал, потенциальные точки расширяемости: IServiceBehavior, IEndpointBehavior, IContractBehavior, IOperationBehavior.

Какие-нибудь мысли, где я могу поймать мою магию обертывания?

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Посмотрите @ мой ответ здесь:

Как настроить процесс, используемый WCF при сериализации аргументов метода контракта?

Там упоминается, как можно заменитьобъект одного типа другому типу, пока он возвращается.

0 голосов
/ 29 декабря 2010

Я думаю, что это невозможно с помощью точек расширения в структуре WCF, потому что вам нужно изменить свой контракт.

Контракт является интерфейсом c #, который используется вашим клиентом.

Вы должны написать собственный прокси-класс для использования вашим клиентом, где вы можете отобразить результаты операции на что угодно:

class ServiceProxy : ClientBase<YourServiceInterface>
{

    public OperationResult EchoDc(MyDs input)
    {
        MyDc result = Channel.EchoDc(input);
        return new OperationResult( ... // map your operation result here))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...