Издеваться над Wcf ServiceContract - PullRequest
8 голосов
/ 18 мая 2010

Я хочу издеваться над ServiceContract. Проблема в том, что Moq (и Castle Dynamic-Proxy) копирует атрибуты из интерфейса в динамический прокси, который не нравится Wcf. Wcf говорит: ServiceContractAttribute должен быть определен только на интерфейсе или реализации, а не на обоих.

Исключением является: InvalidOperationException - класс обслуживания типа Castle.Proxies.IWorkOrderRequestServiceProxy определяет ServiceContract и наследует ServiceContract от типа IWorkOrderRequestService. Наследование контракта может использоваться только среди типов интерфейса. Если класс помечен с помощью ServiceContractAttribute, он должен быть единственным типом в иерархии с ServiceContractAttribute. Рассмотрите возможность перемещения ServiceContractAttribute типа IWorkOrderRequestService в отдельный интерфейс, который реализует тип IWorkOrderRequestService

1 Ответ

22 голосов
/ 18 мая 2010

Только что испытал ту же проблему - так что +1 за решение! : -)

Обновление: http://code.google.com/p/moq/source/browse/trunk/Source/Proxy/CastleProxyFactory.cs содержит ссылку на свойство (коллекцию) с именем AttributesToAvoidReplicating, похожее на место для начала поиска в исходном коде Moq.

Обновление № 2: прибил его!

Добавить:

Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add (TypeOf (ServiceContractAttribute));

прежде чем вы подключите что-либо в ядре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...