WCF服务客户端正在劫持我的接口

WCF服务客户端正在劫持我的接口,wcf,Wcf,我有3个组件: FooInterface(类库) FooService(WCF服务) 足部测试(测试应用) 在这方面,我有: [ServiceContract] public interface IFoo { [OperationContract] void Bar(); } 在FooService.svc中,我有: public class FooService : IFoo { void Bar() { ... } } 现在,在我的测试工具中,在向FooService添

我有3个组件: FooInterface(类库) FooService(WCF服务) 足部测试(测试应用)

在这方面,我有:

[ServiceContract]
public interface IFoo
{
   [OperationContract]
   void Bar();
}
在FooService.svc中,我有:

public class FooService : IFoo
{
   void Bar() { ... }
}
现在,在我的测试工具中,在向FooService添加服务引用之后,我想以这种方式进行实例化:

IFoo foo = new FooService();
问题是,有两个IFoo接口<代码>FooInterfaces.IFoo和
FooTests.FooServiceReference.IFoo
。除非我指定,否则编译器会混淆这两种类型,并且这两种IFoo类型是不可转换的

在Footest中有对FooInterface的引用

我还有其他实现IFoo的类,所以我真的需要一个IFoo接口


有什么想法吗?

您有两个接口,一个在FooInterfaces名称空间中,另一个在FooTests.FooServiceReference名称空间中。后者是在创建对服务的引用时为您创建的,是代理的一部分。要明确说明要使用的IFoo,请使用完整的命名空间名称。“FooInterfaces.IFoo”。

您的测试线束是否也有对服务的服务引用?@chris.house.00是,并且在引用设置中启用了“重用类型”。或者,从测试线束中删除对FooInterfaces程序集的引用,你并不真的需要它,因为你的服务代理中有接口。我不想与IFoo的ServiceReference版本有任何关系,事实上,我很惊讶它竟然被再次创建,因为我已经指定了接口。我使用了服务参考版本来实现FooInterfaces.IFoo。如果我尝试强制转换引用版本,我会得到一个运行时异常。关于您关于从测试工具中删除FooInterfaces的评论,我正在其他需要FooInterfaces版本的类中使用依赖项注入