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