Мне не до конца понятен смысл использование DI (например autofac). Возможно, я не правильно трактую его смысл из-за неверной области применения.
Контекст задачи следующий: необходимо внедрить autofac модуль в систему тестирования. Собственно проблема, зачем мне писать код с разрешением зависимостей через тот же autofac если могу явно создавать объекты и передовать их в конструктор.
К примеру, есть ApiController, у него в конструкторе куча аргументов типа пользовательского контекста, менеджера регистрации, менеджера для отправки смс и т.д. Все эти объекты в свою очередь тоже достаточно сложно инициализируются. К примеру:
ISomeClassInterface someClass;
var builder = new ContainerBuilder();
builder.RegisterType<SomeService>();
var container = builder.Build();
someClass = new SomeClass(container.Resolve<SomeService>();
ISomeClassInterface someClass;
ISomeService service = new SomeService(some arguments...);
someClass = new SomeClass(service);
Вы сами ответили на свой вопрос: "Все эти объекты в свою очередь тоже достаточно сложно инициализируются". Чем сложнее, тем проще ошибиться. Безусловно, можно не использовать никакой DI. Но, во-первых, DI упрощает инициализацию объектов. Во-вторых, DI упрощает подмену объектов. Например, вы захотите использовать другой менеджер регистрации. Без DI придется менять код в нескольких местах, с DI - в одном.
Сравните:
A a = new A(new B(new C()), new D(new E())...);
И как-то условно
A a = container.Resolve<A>();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Какова область ответственности command? Например, регистрация пользователя :
Имеется JSON Schema, которая описывает массив директорий в JSON файлеДиректории могут содержать абсолютные локальные пути, либо быть в UNC формате...