Контроллер доступа Контекст / TempData из бизнес-объектов

Я пытаюсь создать поставщика сеанса / временных данных, который можно поменять местами. Поставщик по умолчанию будет работать поверх asp.net mvc, и ему необходимо было получить доступ к.net mvc TempData из класса бизнес-объектов. Я знаю, что tempdata доступна через контекст контроллера, но я не могу найти, выставлен ли он через HttpContext или что-то еще. Я действительно не хочу передавать контекст Контроллера в качестве аргумента, так как это ослабило бы мое определение интерфейса, поскольку это требуется только поставщику сеансов на основе asp.net, другим (использующим NoSQL DB и т. Д.) Плевать на Контроллерный контекст.

Чтобы уточнить дальше, добавив немного больше кода здесь. мой интерфейс ISession выглядит следующим образом. и когда этот код поступит в производство, ожидается, что сессия / временные данные будут работать с использованием NoSql db. Но я также хотел бы иметь другую реализацию, которая работает поверх сеанса /tempdata mvc asp.net для моего тестирования dev и т.д.

открытый интерфейс ISession

{
    T GetTempData<T>(string key);

    void PutTempData<T>(string key, T value);

    T GetSessiondata<T>(string key);

    void PutSessiondata<T>(string key, T value);

}

1 ответ

Решение

Я не знаю точно, что вы пытаетесь сделать, но TempDataDictionary реализует IDictionary<string, object> так что вы можете сделать так, чтобы ваши бизнес-объекты принимали его как параметр или использовали конструктор. Тогда ваш контроллер может передать TempData в качестве параметра бизнес-объекту. Благодаря использованию словарного интерфейса ваши бизнес-объекты больше не зависят от ASP.NET MVC.

Другие вопросы по тегам