Maison >développement back-end >C++ >Comment puis-je récupérer toutes les classes dans un espace de noms spécifique en C# ?
Obtenir toutes les classes dans un espace de noms spécifique est essentiel dans divers scénarios. En C#, il existe des approches globales pour accomplir cette tâche.
Pour répondre à ce besoin, nous explorerons une approche rétrospective. En répertoriant initialement tous les types dans un assembly, puis en examinant l'espace de noms de chaque type, nous pouvons filtrer efficacement les classes souhaitées.
L'extrait de code suivant présente cette technique :
using System.Reflection; private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.GetTypes() .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)) .ToArray(); }
Pour illustrer son utilisation, considérons l'exemple suivant :
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
Dans les environnements antérieurs à .Net 2.0, où "Assembly.GetExecutingAssembly()" n'est pas disponible, vous aurez besoin d'une solution de contournement pour récupérer l'assembly comme suit :
Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly; Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
En employant ces méthodes, vous pouvez énumérer efficacement toutes les classes dans un espace de noms souhaité en C#.
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!