Как добавить пользовательский IOperationInvoker для каждой операции в конечной точке - PullRequest
2 голосов
/ 19 июня 2010

Мне нужен пользовательский IOperationInvoker в моем сервисе.У меня это работает просто отлично, но мне не особенно нравится идея, что для того, чтобы применить его к определенной операции, я должен сделать его атрибутом.Кажется, я не могу найти какую-либо документацию о том, как настроить его на основе конфигурации (похоже на MessageInspector на конечной точке).

Я создал CustomBehavior, который реализует IEndpointBehavior ApplyDispathBehavior у меня есть следующее:

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
    foreach (var operation in endpointDispatcher.DispatchRuntime.Operations)
    {
        operation.Invoker = new MockServiceOperationInvoker() {Invoker=operation.Invoker };
    }
}

Однако пользовательский вызывающий объект, похоже, не «прилипает».Могут ли изменения быть очищены позже в жизненном цикле?

Все работает, если я сделаю поведение атрибутом, но я бы предпочел этого не делать.Кто-нибудь знает лучший способ применить пользовательский OperationBInvoker ко всем методам в данной конечной точке?

Большое спасибо!

1 Ответ

2 голосов
/ 19 июня 2010

Думаю, я понял это.Зацикливаясь на каждой операции, я могу добавить к ней поведение.Я не знаю, является ли это лучшим способом, но он работает.

public class MockOperationBehavior : BehaviorExtensionElement,  IOperationBehavior, IEndpointBehavior
{
  public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
  {
     foreach (var op in endpoint.Contract.Operations)
     {
         op.Behaviors.Add(this);
     }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...