0

我正在尝试构建一个应用程序来处理对 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了泛型类,改成_Hoststatic string. 这样,每个子类都带有 subclass ApiRequest<*subclassname*>。由于泛型的属性,特定子类的每个对象都将共享一个 static _Host

4

1 回答 1

2

如何将 CombineUri() 设为私有,然后在 MakeRequest() 的实现中调用它。

这个类的用户不必知道他们需要调用两个方法,而且他们必须在调用 MakeRequest 之前调用 CombineUri。这是属于 MakeRequest 的实现细节。

可能我不完全理解这些类,但如果我理解了,那么我会将 CombineUri 设为私有并始终将其称为 MakeRequest 的第一部分。

于 2013-02-10T03:33:21.257 回答