Alle abgeleiteten Typen eines Typs finden
Bei der Programmierung ist es oft notwendig, alle Typen zu identifizieren, die von einem bestimmten Basistyp erben. Derzeit besteht ein gängiger Ansatz darin, alle Typen in den geladenen Assemblys zu durchlaufen und zu prüfen, ob sie dem Basistyp zuweisbar sind.
Eine effizientere und sauberere Methode besteht jedoch darin, eine LINQ-Abfrage zu verwenden, um alle abgeleiteten Typen abzurufen Typen:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
Diese Abfrage sucht nach allen Typen innerhalb der in die aktuelle AppDomain geladenen Assemblys und filtert nach Typen, die dem Basistyp zugewiesen werden können, wodurch effektiv eine Liste abgeleiteter Typen zurückgegeben wird Typen.
Fließende Version und Details:
Der Code kann in einem flüssigeren Stil ausgedrückt werden:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseType).IsAssignableFrom(type)) .ToArray();
Zusätzliche Überlegungen :
Das obige ist der detaillierte Inhalt vonWie kann ich alle abgeleiteten Typen eines Basistyps in C# effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!