2010-05-18 10 views
7

Bir ServiceContract ile çalışmak istiyorum. Sorun şu ki, Moq (ve Castle Dynamic-Proxy), arabirimden Wcf'nin sevmediği dinamik proxy'ye olan nitelikleri kopyalar. Wcf diyor ki: ServiceContractAttribute yalnızca arabirimde veya uygulamada tanımlanmalı, her ikisi de değil.Wcf ServiceContract alaylama

İstisna: ınvalidoperationexception - her ikisi de bir ServiceContract tanımlar ve tip IWorkOrderRequestService bir ServiceContract devralan türü Castle.Proxies.IWorkOrderRequestServiceProxy hizmet sınıfı. Sözleşme mirası sadece arayüz tipleri arasında kullanılabilir. Bir sınıf ServiceContractAttribute ile işaretliyse, ServiceContractAttribute ile hiyerarşideki tek tür olması gerekir. ServiceContractAttribute işlevini IWorkOrderRequestService türünde IWorkOrderRequestService uygulayan ayrı bir arabirime taşımayı düşünün:

cevap

21

Sadece aynı sorunla karşılaştı - bir çözüm için +1! :-)

Güncelleştirme: http://code.google.com/p/moq/source/browse/trunk/Source/Proxy/CastleProxyFactory.cs, AttributesToAvoidReplicating adlı bir özelliğe (koleksiyona) ilişkin bir referans içerir, Kaynak kaynak koduna bakmaya başlamak için bir yer gibi görünür.

Güncelleme # 2: Çıldırdı!

Ekleme:

Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add (typeof (ServiceContractAttribute)); Çekirdeğinizde herhangi bir şey kurmadan önce

.