Я абстрагировал свой контейнер в отдельную сборку, которая зависит от всех других сборок / проектов в зависимости от его сервисных ссылок.Контейнерный проект имеет только один класс и - более или менее - один метод:
public class MySpecialContainer
{
public T Resolve<T>() { // ... Get stuff from the IoC container }
}
Сборка контейнера будет происходить либо в ctor MySpecialContainer, либо просто добавит другой метод, такой как Initialize () или какой-нибудь такой.1004 *
Единственная проблема заключается в том, что этот подход сломался для меня, когда я использовал Autofac и у меня был и Windows Service, и ASP.Net проект, нуждающийся в контейнере.У каждого были свои особые требования к сервисам с ограниченным сроком службы: служба Windows - PerLifetimeScope, ASP.Net - PerHttpRequest.Я думаю, я мог бы передать аргумент в MySpecialContainer, который обозначал, какой сценарий нужно настроить, но я решил просто взять зависимость Autofac напрямую.
Хорошая новость в том, что если вы придерживаетесь инъекции ctor, тоВы можете очень легко поменять различные реализации контейнеров - Autofec, Ninject, StructureMap и т. д.