Quelqu'un a-t-il démarré un projet pour faire IOC au moment de la compilation (éventuellement en utilisant Roslyn ou Linq MethodInfo emit)?
Jusqu'à présent, mon expérience avec les conteneurs IOC a été formidable, mis à part quelques petits problèmes
- De nombreux conteneurs IOC sont lents à démarrer, car une grande partie de la logique de résolution se produit ici
- Il est souvent difficile de s'assurer que la résolution est possible, car la compilation ne garantit plus que le constructeur peut être appelé
- Souvent, les conteneurs IOC ajoutent une petite surcharge à l'exécution (certains ne sont même pas petits, souvent ceux qui démarrent rapidement s'exécutent lentement)
Il me semble que la solution idéale serait d'ajouter une étape de compilation à la chaîne de construction qui ajoute une classe Factory au lieu d'IOC.
Quelqu'un a-t-il déjà fait cela? Sinon, pourquoi pas?
Dagger pour Java / Android fait cela. Il sacrifie un peu de magie d'exécution (comme celle de Guice) pour offrir une expérience de codegen presque complètement à la compilation, y compris la conversion de la plupart des erreurs d'exécution en erreurs de compilation.
Ce serait cool aussi en .NET.
la source