2009-03-18 9 views
0

ich eine Basisklasse haben Request.cs genanntWo Flagge Verwendung für Basisklasse angeben

In dieser Klasse habe ich folgende private Felder:

protected string _requestURI = xxpConfig.xxEndpoint; 
protected string _requestURIAuthBased = xxConfig.xxEndpoint + "?SessionID="; 

Endpunkt nur eine Zeichenfolge ist wie „http://SomeThridPartyAPIURIEndPoint

In dieser Klasse habe ich eine Methode namens Sendrequest.

Subklassen beispiels repräsentieren bestimmte API-Aufrufe:

UpdateCustomerRequest.cs (erbt Request.cs) DeleteCustomerRequest.cs (erbt Request.cs)

und so weiter.

der Anforderungs-Klasse hat eine Methode Sendrequest aufgerufen, der die URI und macht die Arbeit nimmt die API-Anforderung zu senden.

Bestimmte Arten von API-Aufrufen erfordern, dass eine SessionID übergeben wird und andere nicht. Der einzige Unterschied im URI ist ein hinzugefügter Parameter namens sessionID.

Also ich versuche herauszufinden, die beste und effizienteste Möglichkeit, die "Flagge" für jeden Typ von API-Aufruf (Unterklasse) zu setzen, da jeder die auth-formatierten URI gegenüber dem regulären erfordern kann. In meiner Basisklasse könnte ich also überprüfen, ob ich die _requestURI vs. _requestURIAuthBased in meiner Request.SendMethod für die Unterklasse verwenden muss, die ich aufrufen werde, um diesen API-Aufruf durchzuführen.

Antwort

1

Wenn ich folgen, was Sie fragen, die beste Weise, die ich denken kann, ist das Modell der EventArgs-Klasse zu folgen. Alle Event-Handler nehmen ein EventArgs-Objekt, aber irgendwann eine abgeleitete Klasse übergeben wird:

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 ; 
     // : 
    } 
} 
0

Machen Sie eine Eigenschaft in der Basisklasse

... 

// 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; } } 

.... 
+0

Ich kann Ihnen nicht folgen. Ich frage nicht, wie ich danach suchen soll, ich frage, wo man am besten diesen useAuth setzt. Wenn ich eine Reihe von Unterklassen habe, die API-Aufrufe implementieren und die Hälfte von ihnen eine Authentifizierungs-URI benötigt und die Hälfte nicht, wo ist der beste Weg, das für jede Unterklasse zu spezifizieren, so dass die Basis das überprüfen kann? – user72603

+0

Wenn Sie eine Eigenschaft in der Basisklasse erstellen, die in diesem verwendet wird, müssen Sie die useAuth irgendwo abrufen, um dies für jeden Typ von API-Aufruf zu überprüfen, den Ihre Unterklassen darstellen. – user72603

+0

Ich bemerkte, dass ich die Frage beim ersten Mal falsch gelesen habe. Ich denke, mein Schnitt war nicht klar genug. Wird reparieren – BCS

Verwandte Themen