我想構建一個應用程序,處理大量的API請求2或3相關的API。我一般的策略是有一個基類ApiRequest
有:使用繼承作爲包裝API調用
List<Parameter> Parameters
Uri CombinedUri
string Results
string _Host
和方法:
CombineUri() //combines the _Host and parameters into full Uri
MakeRequest() //makes the request and stores Results
然後我會繼承基類成許多不同的API調用,並在這些特定於實現的功能Api調用。
我遇到的問題是我在我的基類構造函數中調用了CombineUri()
,但它要求已經設置了_Host
。但是,我想_Host
是每個子類中的常量,因爲它針對每個不同的Api調用都是特定的。我不想記得從每個派生類的構造函數調用CombineUri
。
任何想法來解決這個問題將不勝感激。另外,如果你有一個完全不同的設計思路來完成Api調用的基礎,那麼我會全神貫注。我不確定我的方法是否最好。
謝謝。
我的解決方案:
我實現了從約翰·柯林梨都的想法。 我將基數ApiRequest
更改爲抽象類,並將CombineUri()
方法移至MakeRequest()
方法中。
我還走了一步,將ApiRequest
更改爲通用類,並將_Host
更改爲static string
。這樣,每個子類的子類都是ApiRequest<*subclassname*>
。由於泛型的屬性,特定子類的每個對象將共享一個靜態的_Host
。
只需將您想要的特定主機傳遞給超類的構造函數即可。 – 2013-02-10 03:06:56
我希望避免這種情況,因爲我是從每個單獨的Api調用的基類派生出來的,並且覺得將這些常量Api主機字符串放在其他代碼中會很奇怪。思考? – forTruce 2013-02-10 03:12:15
我想你可能想要抽象基類。 – 2013-02-10 03:18:02