2011-11-29 55 views
0

我有3個組件: FooInterfaces(類庫) FooService接口(WCF服務) FooTests(測試應用程序)WCF服務客戶端被劫持我的接口

在FooInterfaces我:

[ServiceContract] 
public interface IFoo 
{ 
    [OperationContract] 
    void Bar(); 
} 

在FooService.svc我:

public class FooService : IFoo 
{ 
    void Bar() { ... } 
} 

現在,在我的測試工具我想加入後實例化這種方式服務參考FooService:

IFoo foo = new FooService(); 

問題是,有兩個IFoo接口! FooInterfaces.IFooFooTests.FooServiceReference.IFoo。除非我指定,否則編譯器會在兩者之間產生混淆,並且兩個IFoo類型不可轉換。

FooTests中提供了FooInterfaces的引用。

我有其他的類實現IFoo,所以我真的需要IFoo的一個接口。

任何想法?

+0

您的測試設備是否也提供服務參考? –

+0

@ chris.house.00是,在參考設置中啓用「重用類型」。 – b9190db9

回答

1

在FooInterfaces命名空間中有兩個接口,而在FooTests.FooServiceReference namepsace中有一個接口。後者是在創建對服務的引用時爲您創建的,並且是代理的一部分。要明確要使用的IFoo,請使用完整的名稱空間名稱。 「FooInterfaces.IFoo」。

+0

或者,從測試工具中刪除對FooInterfaces程序集的引用,因爲您將接口作爲服務代理的一部分,所以您並不需要它。 – Maess

+0

我不想與IFoo的ServiceReference版本有任何關係,實際上我很驚訝它甚至再次創建,因爲我已經指定了接口。我注意到了服務參考版本來實現FooInterfaces.IFoo。如果我嘗試轉換參考版本,我會得到一個運行時異常。 – b9190db9

+0

關於您關於從測試工具中移除FooInterfaces的評論,我在其他需要FooInterfaces版本的類中使用依賴注入 – b9190db9