.NET Kern IOC RegisterAssemblyTypes Equivalant

8

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?

    
leen3o 03.03.2017, 06:57
quelle

3 Antworten

4

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 ):

    
Pierre Murasso 10.03.2017 23:25
quelle
0

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 .

%Vor%     
ssmith 03.03.2017 20:55
quelle
0

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 ...

%Vor%

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.

    
Chris Baxter 09.03.2017 17:52
quelle