Recherche de tous les types dérivés d'un type
En programmation, il est souvent nécessaire d'identifier tous les types qui héritent d'un type de base spécifique. Actuellement, une approche courante consiste à parcourir tous les types dans les assemblys chargés et à vérifier s'ils sont attribuables au type de base.
Cependant, une méthode plus efficace et plus propre consiste à utiliser une requête LINQ pour récupérer tous les types dérivés. types :
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
Cette requête recherche tous les types dans les assemblys chargés dans l'AppDomain actuel et filtre les types qui peuvent être attribués au type de base, renvoyant effectivement une liste de types dérivés.
Version fluide et détails :
Le code peut être exprimé dans un style plus fluide :
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseType).IsAssignableFrom(type)) .ToArray();
Considérations supplémentaires :
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!