我試圖創建一個C#類,它可以調用相同類上的相同方法,但類可以來自兩個不同的Web服務引用。我正在訪問SomeWebService
和SomeWebServiceAlt
,它們具有相同的類別,但位於不同的服務器上。我們的目標是能夠首先嚐試使用SomeWebService
中的方法,並且如果那一個假髮退出,請嘗試SomeWebServiceAlt
。我希望有一種訪問任何Web服務的泛型類,但是我遇到了類型約束的問題,因爲沒有任何公共接口或基類用於我在兩個引用中使用的不同類。也就是說,我使用SomeWebService
名稱空間和SomeWebServiceAlt
名稱空間中的ConnectionClass
,但兩個ConnectionClass
類不被C#認爲是相關的,因此我不能只說where TClass : CommonBaseClassAcrossWebServices
。我應該怎麼做?我結束了重複代碼和做:在C#中的兩個Web服務引用中訪問相同的類
if (typeof(SomeWebService.ConnectionClass) == typeof(TConnection))
{ ... }
else if (typeof(SomeWebServiceAlt.ConnectionClass) == typeof(TConnection))
{ ... }
這似乎真的多餘和骯髒。我使用的是.NET 3.5,但我無法控制這兩個Web服務。這是我在這裏看到的問題和類似問題之間的差異:其他人可以控制Web服務。
我覺得我的解決方案最終會使用反射以某種方式檢查並查看預期的方法是否存在,然後在我正在使用的任何Web服務的類上調用該方法。
你使用的是WCF。如果這樣看待共享DLL中的對象,那麼在app.config的Contract中,確保兩個服務使用相同的DLL – dbones 2010-11-09 19:44:11