2016-09-20 24 views
-1

我正在处理一个示例项目,我需要创建一个将结果保存在内存中而不是数据库中的GET方法。ApiController的依赖注入?

最初我在PersonController中创建了字典;然而,这是一个问题,因为它不会在GET请求之后存储在内存中。我需要弄清楚如何只创建NumbersByName的一个实例并将其传递给Api控制器。这可以做到吗?

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

否则,你需要调查使用单例设计模式,那样你只能创建一个实例。