Re[6]: О "наивном" DI и об архитектурном бессилии
От: · Великобритания  
Дата: 01.09.16 15:58
Оценка: +1 :))
Здравствуйте, Tom, Вы писали:

Tom>·>Это ты о чём? О каком-то конкретном контейнере?

Tom>О большинстве современных. Lightinject, DryIoc, Unity, StructureMap итп
Tom>Больше скажу, с вовременных зачастую конфигурация только через код.
Я все не смотрел, посмотрел только первый. А что именно там хорошего, современного?
container.Register<IFoo, Foo>();//я очень надеюсь, что интерфейс IFoo необязателен и регистрировать можно просто Foo.
container.Register<IFoo, AnotherFoo>("AnotherFoo"); // В самом деле? магические строки?!
var instance = container.GetInstance<Bar>();// Service Locator?!! фтопку.

container.RegisterInstance<string>("SomeValue");
var value = container.GetInstance<string>();// в контекст суём тип string?!!

Куча вредных антипаттернов, которые легко размазать по всему проекту, а обычно достаточно одного единственного constructor injection. И вычищать потом это — замучаешься.
И собственно тупой код типа:
var someValue = "SomeValue";
var anotherFoo = new AnotherFoo();
var instance = new Bar(anotherFoo, someValue);

выглядит ничуть не хуже.

Единственное для чего эти контейнеры могут быть хороши это всякое Assembly Scanning, но реально проектов, где это необходимо — очень мало.

Tom>Пользовать DI без контейнера конечно можно но жутко неудобно.

Зато полная поддержка компилятора и IDE. А неудобно только с непривычки.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.