我正在尝试构建一个应用程序来处理向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
。这样,每个子类都有子类ApiRequest<*subclassname*>
。由于泛型的属性,特定子类的每个对象将共享静态_Host
。
答案 0 :(得分:2)
如何将CombineUri()设为私有,然后在MakeRequest()的实现中调用它。
这个类的用户不必知道他们需要调用两个方法,而且他们必须在调用MakeRequest之前调用CombineUri。这是属于MakeRequest的实现细节。
我可能无法完全理解这些类,但如果我这样做,那么我会将CombineUri设为私有,并始终将其称为MakeRequest的第一部分。