我正在尝试构建一个应用程序来处理对 2 或 3 个相关 API 的大量 API 请求。我的一般策略是拥有一个基类ApiRequest
:
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 调用的基础,我会全力以赴。我不确定我的方法是最好的。
谢谢。
我的解决方案:
我实现了 John 和 Colin Pear 的想法。我把基ApiRequest
改成抽象类,把CombineUri()
方法移到MakeRequest()
方法里。
我还更进一步,改成ApiRequest
了泛型类,改成_Host
了static string
. 这样,每个子类都带有 subclass ApiRequest<*subclassname*>
。由于泛型的属性,特定子类的每个对象都将共享一个 static _Host
。