Heim > Backend-Entwicklung > C++ > Wie kann ich effizient alle abgeleiteten Typen eines bestimmten Typs in .NET finden?

Wie kann ich effizient alle abgeleiteten Typen eines bestimmten Typs in .NET finden?

Susan Sarandon
Freigeben: 2025-01-01 03:58:11
Original
921 Leute haben es durchsucht

How Can I Efficiently Find All Derived Types of a Given Type in .NET?

Abgeleitete Typen effizient identifizieren

In .NET ist das Finden aller abgeleiteten Typen eines bestimmten Typs eine nützliche Aufgabe, die häufig bei Laufzeitvorgängen auftritt. Ein gängiger Ansatz besteht darin, alle Typen in geladenen Assemblys zu durchlaufen und die Zuweisung zum Zieltyp zu prüfen. Diese Methode kann jedoch sowohl langsam als auch voller Code sein.

Eine leistungsfähigere und elegantere Lösung besteht darin, die Leistungsfähigkeit von LINQ zu nutzen:

var listOfDerived = (
    from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
    from type in domainAssembly.GetTypes()
    where typeof(BaseType).IsAssignableFrom(type)
    select type).ToArray();
Nach dem Login kopieren

Diese Linq-Abfrage durchsucht effizient alle Assemblys und ihre Typen, wobei nur diejenigen ausgewählt werden, die vom angegebenen Basistyp erben.

Optimierung und Zusätzliche Überlegungen

Um die Leistung weiter zu optimieren, sollten Sie die Verwendung von domainAssembly.GetExportedTypes() anstelle von GetTypes() in Betracht ziehen. Dadurch werden nur öffentlich sichtbare Typen abgerufen, wodurch möglicherweise die Anzahl der erforderlichen Prüfungen reduziert wird.

Beachten Sie außerdem, dass IsAssignableFrom den Basistyp selbst enthält. Schließen Sie es bei Bedarf aus, indem Sie && type != typeof(BaseType) hinzufügen. Um nur nach konkreten Klassen zu filtern, schließen Sie && !type.IsAbstract ein.

Fazit

Durch die Verwendung von LINQ und die Berücksichtigung dieser Optimierungen wird das Auffinden abgeleiteter Typen äußerst effizient und unkompliziert Aufgabe, wodurch die Leistung und Lesbarkeit Ihres Codes erheblich verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient alle abgeleiteten Typen eines bestimmten Typs in .NET finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage