Ссылка на сборку из общего расположения или GAC с Unity - PullRequest
0 голосов
/ 31 мая 2011

Можно ли ссылаться на сборку из общего расположения или GAC с Unity?

Предположим, у меня есть два проекта (в рамках одного решения):

  • MyProject.Data(Интерфейсы репозитория)
  • MyProject.Data.EntityFramework (Реализация структуры репозитория)

Я хочу использовать IoC в приложении ASP.NET MVC (MyProject.Web), которое такжепод тем же решением, но я не хочу добавлять ссылки на проекты как для интерфейсов, так и для реализации.В идеале я хочу добавить ссылку на проект на интерфейсы и загрузить реализацию из общего расположения или GAC.Это предотвращает любой код в MyProject.Web, создающий экземпляры определенной реализации - это всегда должно быть сделано поставщиком IoC.

Я мог бы решить создать реализацию nHibernate, и IoC сделал бы переключение намного легче.Если бы была какая-то прямая связь, это был бы кошмар.И это возвращает меня к вопросу.Позволяет исключить возможность для разработчиков создавать конкретные реализации, не спрашивая контейнер IoC, как разрешить интерфейс.

1 Ответ

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

Unity может создавать экземпляры только тех типов, которые ему доступны, поэтому ваша сборка MyProject.Data.EntityFramework должна находиться в выходном каталоге MVC, если вы хотите использовать его типы. Если вы не хотите напрямую ссылаться на проект, вы можете скопировать сборку, используя действие сборки, но переход по этому пути означает, что вам придется настраивать Unity с использованием XML вместо API, что может быть немного болезненно и теряет Преимущества проверки типов вы получаете с помощью API.

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

...