Hat jemand ein Projekt gestartet, um IOC zur Kompilierungszeit auszuführen (möglicherweise mit Roslyn oder Linq MethodInfo emit)?
Meine Erfahrung mit IOC-Containern war bisher großartig, mit ein paar kleinen Problemen
- Viele IOC-Container starten nur langsam, da hier ein Großteil der Auflösungslogik auftritt
- Es ist oft schwierig sicherzustellen, dass eine Auflösung möglich ist, da die Kompilierung nicht mehr sicherstellt, dass der Konstruktor aufgerufen werden kann
- Oft erhöhen IOC-Container die Laufzeit um einen kleinen Overhead (einige sind nicht einmal klein, oft laufen diejenigen, die schnell starten, langsam).
Es scheint mir, dass die ideale Lösung darin besteht, der Build-Kette einen Kompilierungsschritt hinzuzufügen, der anstelle von IOC eine Factory-Klasse hinzufügt.
Hat das schon mal jemand gemacht? Wenn nicht, warum nicht?
Dolch für Java / Android macht das. Es opfert etwas Laufzeitmagie (wie die von Guice), um eine fast vollständige Codegen-Erfahrung zur Kompilierungszeit zu bieten, einschließlich der Konvertierung der meisten Laufzeitfehler in Kompilierungsfehler.
Wäre auch in .NET cool.
quelle