я, кажется, делают это справедливый бит в моем коде:Должен ли я явно связывать обычные классы с помощью Autofac?
public class ActionsModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.Register(c => LogManager.GetCurrentClassLogger()).As<ILog>().InstancePerDependency();
// Autofac doesn't seem to be able to inject things without explicit binding
builder.RegisterType<ComboActions>().As<ComboActions>().InstancePerHttpRequest();
builder.RegisterType<AppActions>().As<AppActions>().InstancePerHttpRequest();
}
}
}
Где класс «Действия» класс я требую, чтобы быть введен в мой контроллер, и имеет ряд других суб-зависимости.
Кажется немного хлам. Почему autofac не может решить, что класс имеет конструктор с зависимостями, которые уже удовлетворены и автоматически создают экземпляр?
Я имею в виду, что если класс A требует ввода класса B, а класс B требует достаточно C, D, E и т. Д., Я думаю, вы не хотите ходить по всей цепочке зависимостей, чтобы увидеть, можете ли вы сделать класс во время выполнения. ... но если класс А напрямую зависит от C и D, которые явно связаны, то это тривиальный случай?
Я что-то упустил? Кажется, не вижу никакой документации для этого ...
Whoah. Никогда не знал об этом. TIL! –
это УДИВИТЕЛЬНО, тем более, что вы можете сделать что-то вроде 'builder.RegisterSource (новый AnyConcreteTypeNotAlreadyRegisteredSource (x => x.Name.Contains (" ViewModel ")));' –