В какой сборке должен находиться настроенный модуль Autofac? - PullRequest
9 голосов
/ 22 ноября 2011

У меня приложение ac #, настроенное так:

[Assembly-ConsoleApp] --References--> [Assembly-Domain] 
                                               /
[Assembly-FileAccess] --References-->---------/

В основном, большинство моих интерфейсов и несколько конкретных классов находятся в сборке домена, а многие конкретные реализации находятся в FileAccess.сборка.Сборка ConsoleApp использует сборку Domain без ссылок на сборку FileAccess.

Я создал модуль автоматического доступа FileAccess для соединения реализаций FileAccess с интерфейсами домена вместе с любыми конкретными классами непосредственно внутри домена.сборка.Мой вопрос, где поставить этот модуль.С точки зрения передового опыта, должен быть в модуле FileAccess (что потребовало бы добавления ссылки / зависимости от сборок autofac) или в сборку ConsoleApp (который использует модуль и уже имеет зависимость от autofac)?Или будет иметь смысл совершенно отдельная сборка, которая имеет только данный модуль?

Спасибо

1 Ответ

9 голосов
/ 22 ноября 2011

На контейнер следует ссылаться только из корня композиции приложения , что в вашем случае означает сборку ConsoleApp .

Это гарантирует, что сборки, содержащие логику приложения, не будут зависеть от какого-либо конкретного контейнера DI.

Вы могли бы также внедрить модуль в отдельную сборку и загрузить его из корня композиции, но, поскольку эта сборка (ConsoleApp) по-прежнему нуждается в ссылке на Autofac, от этого мало что получается. Это в некоторой степени зависит от рассматриваемого сценария, но если вы не создаете приложение для независимых поставщиков ПО, которое поставляется в виде (практически) упакованного программного обеспечения для многих неконтролируемых клиентов, это редко стоит усилий.

...