Wie registriere ich mehrere Implementierungen einer Schnittstelle in ASP.NET Core ohne manuelle Registrierung?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie registriere ich mehrere Implementierungen einer Schnittstelle in ASP.NET Core ohne manuelle Registrierung?

Post by Guest »

Ich verwende C# und .NET 8 und Microsoft.Extensions.DependencyInjection.
Ich habe eine Schnittstelle mit mehr als 30 verschiedenen Klassen, die sie implementieren. Ich möchte IEnumerable in eine andere Klasse mit einer begrenzten Lebensdauer einfügen.
Mir ist klar, dass ich jede der 30 Klassen manuell registrieren kann – etwa so:< /p>
services.AddScoped();
services.AddScoped();
...
services.AddScoped();

Gibt es eine Möglichkeit, dies dynamischer zu erreichen, ohne jede einzelne Klasse manuell registrieren zu müssen?
BEARBEITEN : Ich habe eine Lösung gefunden, die zu funktionieren scheint. Kann mir jemand Feedback geben?
Type baseClass = typeof(IBaseClass);
var types = Assembly.GetAssembly(baseClass)?.
GetTypes().Where(p => !p.IsAbstract && !p.IsInterface && baseClass
.IsAssignableFrom(p));

foreach (Type t in types!)
{
services.AddScoped(typeof(IBaseClass), t);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post