Ilya
Ilya
тот кто регистрирует в контейнере
Roman
а кто это скрывает в контейнер?
Ilya
и ты в тестах можешь это замокать, если надо
Roman
ну вот тот же человек, который регистрирует в контейнере это, может композишн рут с таким же успехом написать ручками
Roman
и внезапно, внезапно, когда ты добавляешь новый параметр в чей-то конструктор, тебе компилятор сразу подсказывает, что тебе нужно вот тут и вот тут при вызове добавить недостающее
Roman
А DI контейнер молча прожует, пока прогу не прогонишь через определенный сценарий
Roman
ну а как ты это используешь с DI? В конструктор пихаешь IMetricCollector mc так?
Ilya
Roman
ну вот. А потом ты в композишн руте руками сначала создаешь инстанс метрик коллектора или его мока, а потом его передаешь в конструктор своего А
Roman
И если ты его 1 раз создаешь, а потом везде передаешь — вот тебе lifeStyle.Singleton
Roman
или PerWebRequest
Roman
Неужели выросло поколение разработчиков, которые без спринга прогу написать не могут?
Ilya
Roman
даебтвоюмать ну
Ilya
или у меня есть program.cs
Roman
руками создаешь инстансы и все
Roman
и потом запускаешь тот код, который тебе нужен
Ilya
я хочу вызвать метод у A, какой од я должен написать?
Roman
как ты hello world пишешь? Что регистрируешь в контейнере?
Ilya
а потом я напишу, как это делают обычно
Vasily
Вроде и не пятница
Ilya
Vasily
А питерские интеллигенты уже готовы за раннего Гегеля друг друга на куски порвать
Ilya
тоже в конструктор зависимость
Ilya
я просто хочу понять. появится ли суррогатный тип CompositionRoot
Roman
Но ебтвою мать, если мы примитивный код инициализации объекта хотим заменить простыней регистраций, чтобы потом ебать себе мозги лайфтаймом, скоупом, багами в рантайме и все это с помощью нетривиального фреймворка с магией рефлексии, экспрешшнов и небось теперь сорсгенераторов — наъуй это надо а?
Ilya
IdiocyAcceptance
Это глобальный спор DI vs не-DI?
Roman
да! Милости прошу к нашему шалашу
Roman
IdiocyAcceptance
Тогда я ворвусь сюда с блейзор-компонентами и спрошу как там без DI обойтись? :D
Ilya
это нигде не надо
тогда заинжекти мне коллекцию IMetricColletor, чтобы одну из её реализаций можно было написать отдельно
Roman
за блезор ничего не знаю
IdiocyAcceptance
Но думаю что ответ либо никак, либо наверное через такую боль, что ну нахер.
IdiocyAcceptance
Мне кажется что выбор фреймворка в общем и целом ставит все точки над DI/не DI, разве нет?
IdiocyAcceptance
Если фреймворк заточен под определённый стиль работы с зависимостями, то смысл плыть против течения?
Hog
I - заглавная. Точка над ней не нужна!
Roman
например, в ажуре и кое-где в аспнете
IdiocyAcceptance
Т.е. у тебя AspNetCore - это DI 100% и ничего ты не сделаешь иначе (ну или через борьбу). Если у тебя какой-нибудь Giraffe, то вроде можно и обойтись (но я не пробовал)
Ilya
Kirill
Ilya
Roman
ну дак инжекти, кто тебе не дает?
IdiocyAcceptance
Мне кажется вы рили спорите в режиме framework vs DI, то есть про разные вещи. И спор немного обречён на стагнацию)
Vasily
Илья задает стандарты говнокода, смотрю
Ilya
у тебя в руте нету ссылки на все реализации
Hog
IdiocyAcceptance
Hog
Два гриба - размножаются :)
Ilya
2 регает асп, одну я и всё работает
Ilya
а у тебя здесь надо написать new A(new[]{new M1(), new M2(), new M2())
Ilya
Roman
как ты эту коллекцию определишь?
может, я не понимаю, о чем илья, но мой поинт, что DI не решает ни одной фундаментальной проблемы и нужен только чтоб вместо вызова конструкторов ручками писать Register<IMetricCollector>(new MetricCollector());, что получается немного короче, но менее надежно и гораздо сложнее
Ilya
Roman
Roman
карочи
Roman
мне че-т надоело, я устал, я мухожук. Если Илья мою мысль не понял — бох ему судья
Roman
ну и Василий, конечно
Ilya
Hog
Ilya
собственно аналог configure services который можно вызывать много раз из многих мест
Tako
я думал хотя бы в вопросе использовать DI или нет сообщество консистентно
Ilya
но вообще я понял твой поинт
Ilya
но с моей точки зрения это выглядит: я не похож на всех, поэтому буду страдать