Можно ли использовать контейнер IoC для создания страниц и элементов управления веб-форм ASP.NET? - PullRequest
4 голосов
/ 26 августа 2010

С ASP.NET MVC довольно просто интегрировать контейнер IoC для создания контроллеров.

Возможно ли то же самое с веб-формами для создания страниц и элементов управления и передачи им каких-либо зависимостей? Если да, куда мне его подключить?

Ответы [ 5 ]

2 голосов
/ 26 августа 2010

Castle Windsor был первым основным контейнером IoC для ASP.NET. См. этот вопрос, обсуждающий, как его можно использовать с веб-формами.

2 голосов
/ 26 августа 2010

Да, вы можете, вот пример того, как Spring.NET делает это .

1 голос
/ 27 августа 2010

Другим хорошим подходом было бы использование шаблона Model-View-Presenter и внедрение ваших зависимостей в конструктор презентатора.

1 голос
/ 27 августа 2010

Не напрямую, так как веб-формы не позволяют никакому коду осуществлять контроль над экземплярами Page и Control.Так что что-то вроде Page Factory невозможно, и вы не можете делать инъекцию в конструктор.

Но есть обходные пути / взломы, которые могут купить вам инъекцию сеттера, как уже упоминали другие.

0 голосов
/ 16 октября 2018

Я знаю, что этот вопрос очень старый, но в .NET Framework 4.7.2+ вы можете использовать конструктор на страницах ASP.NET WebForm и в пользовательских элементах управления.

С это официальное сообщение в блоге :

Области, в которых может использоваться внедрение зависимостей

Есть много областей, в которых вы можете использовать Dependency Injection в приложениях WebForms. Вот полный список.

  • Страницы и элементы управления Страница веб-форм Пользовательский элемент управления Пользовательский элемент управления
  • IHttpHandler и IHttpHandlerFactory
  • IHttpModule Провайдеры
  • BuildProvider
  • ResourceProviderFactory
  • Провайдер мониторинга здоровья
  • Любой поставщик на основе ProviderBase, созданный System.Web.Configuration.ProvidersHelper.InstantiateProvider. например пользовательский поставщик состояния сеанса
...