Maison >développement back-end >C++ >Comment puis-je récupérer toutes les classes dans un espace de noms spécifique en C# ?

Comment puis-je récupérer toutes les classes dans un espace de noms spécifique en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 18:02:15702parcourir

How Can I Retrieve All Classes Within a Specific Namespace in C#?

Récupérer toutes les classes dans un espace de noms 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn