Как бы вы подошли к изоляции решателя зависимостей в одной области в MVC3? - PullRequest
1 голос
/ 18 ноября 2010

В духе недавнего выделения вещей и их подключения через NuGet, есть ли у кого-нибудь идея о том, как ограничить средство разрешения зависимостей только одной областью в MVC3?Достаточно просто держать представления и контроллеры ограниченными областью, но если я не вижу очевидного хука, похоже, что установка IDependencyResolver неизбежно имеет глобальную область действия.Я хотел бы ограничить его только одной областью.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

IDependencyResolver является глобальным по дизайну.Если вы хотите варьировать поведение в зависимости от области, вам следует рассмотреть различные типы и интерфейсы * Activator, которые могут принимать решения на основе объектов контекста.

Что конкретно вы пытаетесь сделать?

1 голос
/ 18 ноября 2010

Я бы предложил использовать для этого Common Service Locator. По сути, каждая область может настроить CSL для своего конкретного контейнера.

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

В общем, я не сторонник использования CSL в бизнес-приложениях. Его цель - упростить интеграцию компонентов с открытым исходным кодом, таких как MassTransit, в линейку бизнес-приложений. Однако это может быть исключением.

Кроме того, посмотрите на переносимые области mvccontrib. Он предназначен для такого типа вещей.

0 голосов
/ 18 ноября 2010

То, что вы пытаетесь сделать, звучит как плохая идея.Точка внедрения зависимости заключается в том, что вы можете изолировать определенные зависимости и не заботиться о коде, откуда они берутся.

Если вы пытаетесь ограничить некоторые объекты или классы определенной областью MVC, настройте свой инжектор зависимостейчтобы позвонить нужным людям в нужное время.

Еще несколько подробностей о том, что вы пытаетесь сделать, помогут получить лучшие ответы.

...