внедрение зависимостей с использованием единицы в пользовательском поставщике хранилища сеансов - PullRequest
2 голосов
/ 11 мая 2011

Я создал собственный поставщик SessionStateStore, однако зависимости не были разрешены. Я использовал Unity для DI.

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

  1. провайдеры создаются и управляются фреймворком, и у нас нет возможности перехватить эту конструкцию, чтобы обеспечить дополнительное внедрение зависимостей
  2. переопределите метод Initialize () в вашем пользовательском провайдере и выполните внедрение зависимостей там

Есть похожая проблема и достойное решение здесь и здесь (StructureMap, а не Unity), но я не могу понять это правильно.

Пожалуйста, помогите. Спасибо.

1 Ответ

1 голос
/ 12 мая 2011

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

Если вы используете DI-контейнер (например, Unity), вы можете сохранить экземпляр контейнера в HttpContext и получить его оттуда до составить свой граф объектов из провайдера.

...