Alguém já iniciou um projeto para executar o COI em tempo de compilação (possivelmente usando a emissão de Roslyn ou Linq MethodInfo)?
Minha experiência com contêineres do COI até agora tem sido ótima, revelando alguns pequenos problemas
- Muitos contêineres do COI demoram a iniciar, pois grande parte da lógica de resolução ocorre aqui
- Muitas vezes, é difícil garantir que a resolução seja possível, pois a compilação não garante mais que o construtor possa ser chamado
- Freqüentemente, os contêineres do IOC adicionam uma pequena sobrecarga ao tempo de execução (alguns nem são pequenos, geralmente os que iniciam rapidamente são executados lentamente)
Parece-me que a solução ideal seria adicionar uma etapa de compilação à cadeia de compilação que adiciona uma classe Factory em vez de IOC.
Alguém já fez isso antes? Se não, por que não?
O Dagger para Java / Android faz isso. Ele sacrifica um pouco da mágica do tempo de execução (como a de Guice) para oferecer uma experiência de codegen quase completamente em tempo de compilação, incluindo a conversão da maioria dos erros de tempo de execução em erros de compilação.
Seria legal no .NET também.
fonte