StrongInject: строгая типизация пришла в Dependency Injection
- Алик Ким
- 16 янв. 2023 г.
- 1 мин. чтения
Обновлено: 8 апр. 2023 г.
Ребята, я что нашел!!
Все знают, что DI - дар, данный нам свыше, который вознес жизнь программистов в райские кущи.
Единственное, что всегда меня смущало как адепта строгой типизированности - отсутствие контроля времени компилляции за корректностью настроек DI. отлов исключений при первых вызовах кода классов, полученных из DI - это был грустный неизбежный этап разработки. А если ты использовал какую-то Lazy-resolution - то вообще были хорошие шансы узнать о неправильной настройке DI от тестера, а то и от пользователя.
так вот, мытарствам пришел конец!
представляете, забудешь зарегистрировать какую-нибудь зависимость зависимости зависимости - у тебя вылезет ошибка на этапе компиляции!
зарегистрируешь в качестве реализации абстрактный класс - ошибка на этапе компиляции!
нам вернули достоинство, господа строгие типизировщики!
реализовано за счет каких то волшебных штучек Roslyn
пробежался по фичам - вроде, есть все, что должно быть у хорошего DI-контейнера. разные сроки жизни, фабрики, регистрация инстансов, внешнее управление диспозалом. и даже поддержка декораторов (не встречал такую раньше). Есть интеграция с Asp.Net Core
в общем, горячо рекомендую!
UPD: не работает, если использовать внутри .net Standard - сборки, вызываемой из .net Framework - https://github.com/AliqQim/test_projects.git , ветка DI_StrongInject__references_from_other_projects
Comments