2016-09-20 4 views
-1

Im работает над примером проекта, где мне нужно создать метод GET, который сохраняет результаты в памяти, а не в базу данных.Инъекционная инъекция для ApiController?

Первоначально я создал словарь в PersonController; однако это проблема, поскольку она не сохраняется в памяти после запроса GET. Мне нужно выяснить, как создать только один экземпляр NumbersByName и передать его в 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

В противном случае вам нужно исследовать с использованием шаблона проектирования синглтона, таким образом вы создадите только один экземпляр.

Смежные вопросы