Recherche de types dérivés d'un type spécifié
En programmation, il est souvent nécessaire de déterminer tous les types dérivés d'un type de base donné. Traditionnellement, cela était réalisé grâce à des techniques laborieuses telles que l'itération sur tous les types dans les assemblys chargés et la vérification manuelle de l'assignabilité au type cible.
Cependant, une solution plus efficace et plus élégante existe en utilisant LINQ (Language Integrated Query) . L'extrait de code suivant fournit un moyen simple et performant d'accomplir cette tâche :
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseTypeName).IsAssignableFrom(type) select type).ToArray();
Syntaxe Fluent alternative :
L'expression LINQ peut également être écrite dans un format plus style fluide pour améliorer lisibilité :
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseTypeName).IsAssignableFrom(type)) .ToArray();
Personnalisations :
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!