Должен ли я явно связывать обычные классы с помощью 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();
        }
    }
}

Где класс «действия» — это класс, который мне нужно внедрить в мой контроллер, и он имеет различные другие зависимости sub -.

Кажется немного мусором. Почему autofac не может решить, что у класса есть конструктор с уже удовлетворенными зависимостями, и создать экземпляр автоматически?

Я имею в виду, что если класс A требует внедрения класса B, а класс B требует C, D, E и т. д., достаточно честно, я думаю, вы не хотите проходить всю цепочку зависимостей, чтобы увидеть, можете ли вы создать класс во время выполнения.... но если класс A напрямую зависит от C и D, которые явно связаны, разве это не тривиальный случай?

Я что-то упускаю? Не могу найти никакой документации для этого...

7
задан Doug 13 July 2012 в 05:09
поделиться