Без DI у Вас не получилось. Вы написали то что делает обычный IOC контейнер, но в ручную.
Ну и в примитивном случае "прогать на интерфейсах" можно. но что если вложенность будет хотя бы 3?
и "const someX: X = new A();" - это уже не "прогать на интефейсах", а жесткая завязка на реализацию interface X, что усложнит как минимум тестирование.
Поясните пожалуйста, почему отказ от поколений gc уменьшит количество stop world? Интуитивно кажется что это не должно никак повлиять, но и даже наоборот, отказ спровоцирует увеличение продолжительности stop world...
Откройте для себя wsl
Без DI у Вас не получилось. Вы написали то что делает обычный IOC контейнер, но в ручную.
Ну и в примитивном случае "прогать на интерфейсах" можно. но что если вложенность будет хотя бы 3?
и "const someX: X = new A();" - это уже не "прогать на интефейсах", а жесткая завязка на реализацию interface X, что усложнит как минимум тестирование.
Где тут run-time зависимости? Как вы без DI тесты юнит тесты пишете?
Поясните пожалуйста, почему отказ от поколений gc уменьшит количество stop world? Интуитивно кажется что это не должно никак повлиять, но и даже наоборот, отказ спровоцирует увеличение продолжительности stop world...
пруфа, конечно же, не будет
Вероятно из за сертификации в Европе нолик порезали
Как странно видеть manual reset event и Task.Run вместе
А причём тут язык?
1с ники открывают n+1 problem...
При таких вводных проще будет сразу писать хранимую процедуру в бд.
p.s. зачем план запроса строить на этапе компиляции?
Cубд умеют кэшировать планы запросов.
Планы запросов имеют тенденцию устаревать - ну там статистка, индексы и вот это все
"какая погода в Москве" ваше решение тоже что то странное выдает
Все ещё хуже: все эти мапперы делают свою магию под капотом, и то что какое-то поле используется совсем не видно find usage ide.
Настолько плохой код что очень не похоже на 10+ лет опыта
Примеры так себе. Какая доля от серийного КАМАЗа в ралийном? Можно поставить на серийный КамАЗ внедорожную резину и поехать париж-дакар? Он доедит?