Maison >développement back-end >C++ >Comment puis-je trouver efficacement tous les types dérivés d'un type donné à l'aide de la réflexion ?
Trouver les types dérivés d'un type
Dans de nombreux cas, il est nécessaire de déterminer les types dérivés d'un type donné. Cependant, les approches par défaut, telles que parcourir tous les types dans les assemblys chargés et vérifier leur assignabilité, peuvent s'avérer inefficaces.
Utiliser Reflection
Une solution plus performante consiste à utiliser réflexion pour récupérer les types dérivés. Voici une approche basée sur LINQ :
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from assemblyType in domainAssembly.GetTypes() where type.IsAssignableFrom(assemblyType) select assemblyType).ToArray();
Cette méthode parcourt tous les assemblys et vérifie si le type donné est attribuable à chaque type d'assembly.
Version fluide
Pour une meilleure lisibilité, vous pouvez utiliser un langage courant version :
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(assemblyType => type.IsAssignableFrom(assemblyType)) .ToArray();
Considérations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!