Кажется, я делаю это довольно часто в своем коде:
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();
}
}
}
Где класс «действия» — это класс, который мне нужно внедрить в мой контроллер, и он имеет различные другие зависимости sub -.
Кажется немного мусором. Почему autofac не может решить, что у класса есть конструктор с уже удовлетворенными зависимостями, и создать экземпляр автоматически?
Я имею в виду, что если класс A требует внедрения класса B, а класс B требует C, D, E и т. д., достаточно честно, я думаю, вы не хотите проходить всю цепочку зависимостей, чтобы увидеть, можете ли вы создать класс во время выполнения.... но если класс A напрямую зависит от C и D, которые явно связаны, разве это не тривиальный случай?
Я что-то упускаю? Не могу найти никакой документации для этого...