我試圖把幾個第三方Web服務的Web服務包裝。對於這個問題的緣故,我們會以兩個人的工作:動態命名空間切換
- OrderService
- AddressService
這兩種服務在不同的命名空間中定義相同的對象:
- OrderService.AuthenticationParameters
- AddressService.AuthenticationParameters
我希望能夠創建一個能夠檢測/切換名稱空間的單一基類。例如:
public abstract class BaseLogic
{
internal BaseLogic()
{
/* Initialize authParams */
//Switch out/detect namespace here
this.authParams = new OrderService.AuthenticationParameters();
this.authParams.accountName = "[MyAccountName]";
this.authParams.userName = "[MyUserName]";
this.authParams.password = "[MyPassword]";
}
}
我見過幾個類似的問題。要麼他們不適用於我的情況,要麼我不能理解他們。
問題:是我想實現的可能嗎?如果可能的話,我是否過分複雜?
附加信息:事實上,將會有兩個以上的服務共享這個公共對象。供應商爲其提供的每個功能分支提供單獨的服務URL。
很好的答案,很好的細節。我採用了「動態」方法,因爲目前看起來工作量最少。似乎運作良好。 –
@JamesHill沒問題。只要注意'dynamic',記住通常由編譯器捕獲的簡單錯誤直到DLR運行時才能找到。 –
雖然方法和屬性的返回類型是在該名稱空間內定義的類的一個類型,但仍存在問題。如果你所做的只是返回泛型類型,這個方法就可以正常工作。 – Xipooo