Кто-нибудь начал проект для выполнения IOC во время компиляции (возможно, используя Roslyn или Linq MethodInfo emit)?
Мой опыт работы с контейнерами IOC до сих пор был замечательным, за исключением нескольких небольших проблем.
- Многие контейнеры IOC запускаются медленно, так как большая часть логики разрешения происходит здесь
- Часто трудно гарантировать, что разрешение возможно, так как компиляция больше не гарантирует, что конструктор может быть вызван
- Часто контейнеры IOC добавляют небольшие накладные расходы к среде выполнения (некоторые даже не маленькие, часто те, которые запускаются быстро, работают медленно)
Мне кажется, что идеальным решением было бы добавить шаг компиляции в цепочку сборки, которая добавляет класс Factory вместо IOC.
Кто-нибудь делал это раньше? Если нет, то почему нет?
источник
Dagger для Java / Android делает это. Он жертвует некоторой магией времени исполнения (например, Guice), чтобы предложить практически полностью кодированный код времени компиляции, включая преобразование большинства ошибок времени выполнения в ошибки компиляции.
Было бы круто в .NET тоже.
источник