模拟Wcf ServiceContract

时间:2010-05-18 08:17:20

标签: wcf moq

我想模拟一个ServiceContract。问题是Moq(和Castle Dynamic-Proxy)将属性从接口复制到Wcf不喜欢的动态代理。 Wcf说:ServiceContractAttribute只应在接口或实现上定义,而不是两者都定义。

异常是:InvalidOperationException - Castle.Proxies.IWorkOrderRequestServiceProxy类型的服务类都定义了ServiceContract并从IWorkOrderRequestService类型继承了ServiceContract。合同继承只能在接口类型中使用。如果类使用ServiceContractAttribute标记,则它必须是具有ServiceContractAttribute的层次结构中的唯一类型。考虑将类型IWorkOrderRequestService上的ServiceContractAttribute移动到IWorkOrderRequestService实现的单独接口

1 个答案:

答案 0 :(得分:22)

刚遇到同样的问题 - 所以+1解决方案! : - )

更新:http://code.google.com/p/moq/source/browse/trunk/Source/Proxy/CastleProxyFactory.cs包含对名为AttributesToAvoidReplicating的属性(集合)的引用,看起来像是一个开始查看Moq源代码的地方。

更新#2:钉住它!

添加:

Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof运算(ServiceContractAttribute的));

在连接内核中的任何内容之前