ApiController的依赖注入?

时间:2016-09-20 23:11:28

标签: c# asp.net asp.net-mvc dependency-injection

我正在研究一个示例项目,我需要创建一个GET方法,将结果保存在内存中而不是数据库中。

最初我在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);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用缓存来存储数据

示例:

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

您可以在代码中应用相同的概念。您可以查看This

否则,您需要使用单例设计模式进行调查,这样您只需创建一个实例。