在何处指定基类使用的标志

时间:2009-03-18 20:00:36

标签: c# architecture

我有一个名为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调用子类。

2 个答案:

答案 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; } }

....