При использовании готового Autofac ожидается, что каждый тип, который вы хотите использовать, регистрируется в контейнере, либо напрямую, используя методы Register...
, либо массово, используя RegisterAssemblyTypes
.Но есть и другие варианты, взгляните на статью Николаса о разрешении всего .Так что да, Autofac может делать то же, что и Unity, но вам придется его включить.
Обновление: на самом деле, функция «разрешить что-нибудь» теперь встроена, и вы можетевыполните следующие действия:
var cb = new ContainerBuilder();
cb.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
return cb.Build();
С помощью AnyConcreteTypeNotAlreadyRegisteredSource
вы можете разрешить оба значения C
и B
, не регистрируя ни одного из них.
Обратите внимание, что время жизни служб разрешеноAnyConcreteTypeNotAlreadyRegisteredSource
будет "на область действия зависимости" .
Примечание: эта тема в группе обсуждения Autofac связана.