Ich weiß, dass einige DI-Frameworks dies unterstützen (z. B. Ninject), aber ich möchte speziell wissen, ob es mit möglich ist.Kann Autofac automatisch selbstbindend?
Ich möchte in der Lage sein, einen Autofac-Container nach einer konkreten Klasse zu fragen und eine Instanz mit allen passenden Konstruktorabhängigkeiten zurückzusenden, , ohne jemals diese konkrete Klasse zu registrieren. Das heißt, wenn ich es nie explizit binden, dann automatisch die konkrete Klasse an sich binden, als ob ich builder.Register<MyClass>();
Ein gutes Beispiel genannt hatte, als dies nützlich wäre, ist Viewmodels. In MVVM ist die Schichtung so, dass nur die Ansicht vom ViewModel abhängt, und das über eine lose Typisierung, und Sie testen die Ansicht trotzdem nicht in der Einheit. Es ist also nicht nötig, das ViewModel für Tests zu verspotten - und daher gibt es keinen Grund, für jedes ViewModel eine Schnittstelle zu haben. In diesem Fall ist das übliche DI-Muster von "register this interface to resolve to this class" unnötige Komplexität. Explizit selbstbindend, wie builder.Register<MyClass>();
, fühlt sich auch wie ein unnötiger Schritt an, wenn es um etwas so Einfaches wie eine konkrete Klasse geht.
Ich kenne die reflection-based registration example in den Autofac-Dokumenten, aber das ist auch nicht nach meinem Geschmack. Ich möchte nicht die Komplexität (und Langsamkeit) der Registrierung aller möglichen Klassen im Voraus; Ich möchte, dass der Rahmen mir gibt, was ich brauche, wenn ich es brauche. Konvention über Konfiguration und all das.
Gibt es eine Möglichkeit, Autofac so zu konfigurieren, dass es sagen kann "Oh, das ist ein konkreter Typ, und niemand hat es registriert, also werde ich einfach so handeln, als wäre es mit den Standardeinstellungen registriert worden"?
Sweet - klingt genau nach dem was ich gesucht habe. Vielen Dank! –