Ich verwende den Standard-.NET-Core-IOC. Aber ich brauche etwas Funktionalität wie das, das mit AutoFac kommt. Ich möchte / muss die Anzahl der Abhängigkeiten von Drittanbietern in diesem Projekt begrenzen. Hatte also gehofft, dass ich so etwas wie diese AutoFac Methode im Standard .NET Core IOC haben könnte.
%Vor%Ist das möglich?
Ja, Sie können dies mit dem integrierten .NET Core IOC-Container tun, indem Sie Scrutor Erweiterungsmethoden verwenden. Es hat einige schöne Assembly-Scan-Funktionen.
Versuchen Sie Folgendes:
%Vor%Es gilt für den integrierten IOC-Container, obwohl es selbst kein eingebautes Paket ist ( Scrutor-Paket auf Nuget ):
Sie können wahrscheinlich Ihre eigene Erweiterungsmethode implementieren, um solche Dinge zu tun, aber Sie können auch einfach Autofac verwenden, wenn es eine gewünschte Funktion hat. Gibt es einen Grund, warum du das kannst? Um dies zu tun, konfigurieren Sie es einfach und geben es aus ConfigureServices
zurück, wie in hier .
Sie können einfach Ihre eigene Methode implementieren, um alle Assembly-Typen für eine bestimmte Assembly oder einen Satz von Assemblys zu registrieren ... der Code würde folgendermaßen aussehen:
%Vor% Der Code wählt alle nicht abstrakten Typen aus assemblies
aus und ruft alle Schnittstellen für jeden Typ ab, wobei für jedes Interface / Implementierungspaar eine Singleton
-Registrierung erstellt wird.
Ich ziehe es vor, alle Instanzen einer expliziten Schnittstelle zu registrieren (zB ICommandHandler
oder ähnliches), daher füge ich Erweiterungsmethoden in den unten gezeigten Zeilen von AddCommandHandlers
für die wenigen Typen hinzu, die ich any Instanz von zu registrieren ...
Hinzufügen eines Anrufs ähnlich wie services.AddCommandHandlers(DomainAssembly.Reference);
in ConfigureServices
...
Ich bevorzuge diesen Ansatz, weil die Registrierung aller Interfaces für alle Arten eine Menge von Gruft-Registrierungen zu Ihrem IoC-Container hinzufügen wird ... normalerweise keine große Sache, aber meiner Meinung nach sauberer.
Tags und Links asp.net autofac asp.net-core asp.net-core-mvc