У меня есть веб-приложение ASP.NET MVC, которое реализует пользовательский поставщик членства. Пользовательский поставщик членства принимает UserRepository
своему конструктору, который обеспечивает интерфейс между поставщиком членства и NHibernate. UserRepository
предоставляется контейнером Ninject IoC.Инъекция зависимостей с пользовательским поставщиком членства
Очевидно, однако, это не работает, когда поставщик создается .NET: конструктор без параметров не имеет UserRepository и не может его создать (UserRepository требует, чтобы сеанс NHibernate передавался его конструктору), который затем означает, что провайдер не может получить доступ к своему хранилищу данных. Как я могу разрешить свою зависимость от объекта?
Возможно, стоит отметить, что это существующее приложение, которое было доработано с помощью Ninject. Раньше я использовал беззазорные конструкторы, которые могли создавать свои необходимые зависимости в сочетании с параметризованными конструкторами для поддержки модульного тестирования.
Любые мысли, или я построил себя в углу здесь?
Ninject имеет официальный адаптер CSL Январь 2010. –
Он по-прежнему отсутствует на домашней странице CSL (вместо этого он включен в версию NInject) – SztupY
«конструктор, который инициализирует необходимые репозитории с помощью Ninject» - смотрите, если ваши репозитории (или их зависимости) находятся в области «Запрос» или «Переход» и любые вид контекста одноразовых данных вступает в игру, в конечном итоге вы получите доступ к контексту данных с информацией обо всех, кроме первого запроса (поскольку вы не контролируете время жизни Поставщика, а ASP.NET будет повторно использовать его в запросах). Я закончил с получением экземпляра репозитория от локатора каждый раз, когда мне нужно было позвонить ему, когда я столкнулся с этой проблемой. –