2016-09-20 33 views
-1

私は結果をデータベースではなくメモリに保存するGETメソッドを作成する必要があるサンプルプロジェクトで作業しています。ApiControllerの依存性注入?

元々私はPersonControllerで辞書を作成しました。しかし、それはGET要求後にメモリ内に残らないため、問題です。 NumbersByNameのインスタンスを1つだけ作成し、それをApi Controllerに渡す方法を理解する必要があります。これはできますか?

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リクエストは何も保持しないでください。 GETリクエストは冪等でなければなりません。 – Steven

答えて

0

さてあなたは

例のデータを格納するキャッシュを使用することができます。

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

あなたは、あなたのコード内で同じ概念を適用することができます。あなたは一見見ることができますThis

そうでなければ、あなたは1つだけのインスタンスを作成するように、シングルトンデザインパターンを使用して調べる必要があります。