我有一个名为Request.cs的基类
在本课程中,我有以下私人领域:
protected string _requestURI = xxpConfig.xxEndpoint;
protected string _requestURIAuthBased = xxConfig.xxEndpoint + "?SessionID=";
端点只是一个字符串,例如“http://SomeThridPartyAPIURIEndPoint”
在这个课程中,我有一个名为SendRequest的方法。
例如,子类代表某些API调用:
UpdateCustomerRequest.cs(继承Request.cs)DeleteCustomerRequest.cs(继承Request.cs)
等等。
Request类有一个名为SendRequest的方法,它接受URI并完成发送API请求的工作。
某些类型的API调用需要传递sessionID而其他API调用不需要传递。 URI的唯一区别是添加了一个名为sessionID的参数。
所以我想弄清楚,因为每个5月成立了“标志”为每种类型的API调用(子类)的最佳和最有效的方式,也可以不要求身份验证格式的URI主场迎战常规。所以在我的基类,我可以检查我是否需要使用_requestURI与_requestURIAuthBased在我Request.SendMethod对于我将要打电话来作出这样的API调用子类。
答案 0 :(得分:1)
如果我按照你的要求行事,我能想到的最好的方法就是遵循EventArgs类的模型。所有事件处理程序都使用EventArgs对象,但有时会传递派生类:
public class RequestArgs { }
public class Request
{ // ...
void virtual SendRequest(RequestArgs args);
}
// ----------------------------
public class UpdateArgs : RequestArgs
{
public string SessionID {get; set;}
}
class UpdateCustomerRequest : Request
{ // ...
void SendRequest(RequestArgs args)
{
UpdateArgs updateArgs = args as UpdateArgs ;
// :
}
}
答案 1 :(得分:0)
在基类中创建一个属性
...
// base class
abstract string RequestURI { get; };
// class that needs auth
override string RequestURI { get { return _requestURIAuthBased; } }
// class that dosn't needs auth
override string RequestURI { get { return _requestURI; } }
....