Mocking ein Wcf ServiceContract

7

Ich möchte einen ServiceContract verspotten. Das Problem ist, dass Moq (und Castle Dynamic-Proxy) die Attribute von der Schnittstelle zum dynamischen Proxy kopiert, die Wcf nicht mag. Wcf sagt: Das ServiceContractAttribute sollte nur auf der Schnittstelle oder der Implementierung definiert werden, nicht beides.

Ausnahme ist: InvalidOperationException - Die Serviceklasse vom Typ Castle.Proxies.IWorkOrderRequestServiceProxy definiert einen ServiceContract und erbt einen ServiceContract vom Typ IWorkOrderRequestService. Die Vertragsvererbung kann nur zwischen den Schnittstellentypen verwendet werden. Wenn eine Klasse mit ServiceContractAttribute markiert ist, muss es der einzige Typ in der Hierarchie mit ServiceContractAttribute sein. Ziehen Sie in Betracht, das ServiceContractAttribute für den Typ IWorkOrderRequestService auf eine separate Schnittstelle zu verschieben, die IWorkOrderRequestService implementiert

    
Michael 18.05.2010, 08:17
quelle

1 Antwort

21

Habe gerade das gleiche Problem erlebt - also +1 für eine Lösung! : -)

Update: Ссылка enthält einen Verweis auf eine Eigenschaft (sammlung) namens AttributesToAvoidReplicating, sieht wie ein Ort aus, an dem man im Moq-Quellcode suchen kann.

Update # 2: Es wurde genagelt!

Hinzufügen:

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

, bevor Sie irgendetwas in Ihrem Kernel anschließen.

    
larsw 18.05.2010, 08:43
quelle

Tags und Links