2016-09-20 1 views
-1

Ich arbeite an einem Beispielprojekt, wo ich eine GET-Methode erstellen muss, die die Ergebnisse im Speicher und nicht in einer Datenbank speichert.Dependency-Injektion für ApiController?

Ursprünglich habe ich das Wörterbuch in PersonController erstellt; Dies ist jedoch ein Problem, da es nach der GET-Anforderung nicht im Speicher verbleibt. Ich muss herausfinden, wie man nur eine Instanz von NumbersByName erstellt und sie an den Api Controller weiterleitet. Kann das gemacht werden?

public class PersonController : ApiController 
{ 
    private readonly Dictionary<string, List<int>> NumbersByName; 

    public PersonController(Dictionary<string, List<int>> numbersByName) 
    { 
     NumbersByName = numbersByName; 
    } 

    [HttpGet] 
    public IHttpActionResult GetPersonsNumbers(string name) 
    { 
     var personsNumbers = NumbersByName[name]; 

     return Ok(personsNumbers); 
    } 
} 
+0

GET-Anfragen sollten nichts persistieren. GET-Anfragen sollten idempotent sein. – Steven

Antwort

0

Nun können Sie Cache verwenden, um die Daten zu speichern

Beispiel:

public string[] GetNames() 
{ 
    string[] names = null; 
    if(Cache["names"] == null) 
    { 
    names = DB.GetNames(); 
    Cache["names"] = names; 
    } 
    else 
    { 
    names = Cache["names"]; 
    } 
    return names; 
} 

Sie können das gleiche Konzept in Ihrem Code anwenden. Sie können einen Blick auf This

Sonst müssen Sie untersuchen mit dem Singleton Design-Muster, auf diese Weise erstellen Sie nur eine Instanz.

Verwandte Themen