Maison >développement back-end >C++ >Comment puis-je accéder à toutes les classes d'un espace de noms à l'aide de Reflection en C# ?

Comment puis-je accéder à toutes les classes d'un espace de noms à l'aide de Reflection en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-18 04:17:12837parcourir

How Can I Access All Classes Within a Namespace Using Reflection in C#?

Utilisez la réflexion C# pour accéder à toutes les classes de l'espace de noms

En C#, l'obtention de toutes les classes d'un espace de noms par réflexion nécessite un examen attentif. Contrairement à Java, où les classes n'existent que dans un espace de noms spécifié, les espaces de noms C# peuvent s'étendre sur plusieurs assemblys.

Pour obtenir une liste complète des classes dans un espace de noms, procédez comme suit :

  1. Énumération des assemblys : Obtient une liste d'assemblys qui font référence à l'espace de noms cible. Ceci peut être réalisé en utilisant Assembly.GetExecutingAssembly().GetTypes().
  2. Filtrer les classes : Affinez les types obtenus à partir de l'assembly aux seuls types qui sont des classes et correspondent à l'espace de noms requis. Utilisez des structures comme where t.IsClass && t.Namespace == nspace pour filtrer.

Le code suivant utilise efficacement cette approche :

<code class="language-csharp">string nspace = "...";

var q = from t in Assembly.GetExecutingAssembly().GetTypes()
        where t.IsClass && t.Namespace == nspace
        select t;

q.ToList().ForEach(t => Console.WriteLine(t.Name));</code>

Ce code parcourt tous les types de l'assembly, en sélectionnant les classes dans l'espace de noms spécifié. Imprimez ensuite le nom de la classe sur la console. Notez que cela est limité à l’assembly en cours d’exécution. Pour accéder aux classes d’autres assemblys, vous devez modifier votre code pour inclure des références à ces assemblys.

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