Comment puis-je obtenir toutes les classes dans un espace de noms en C#?Comment puis-je obtenir toutes les classes dans un espace de noms?
Répondre
Vous devrez le faire "en arrière"; liste de tous les types dans un assemblage, puis contrôle l'espace de noms de chaque type:
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return
assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
Exemple d'utilisation:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
Pour tout avant .Net 2.0 où Assembly.GetExecutingAssembly()
n'est pas disponible, vous aura besoin d'une petite solution de contournement pour obtenir l'assemblage:
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);
}
.Where (t => String.Equals (t.Namespace, nameSpace, StringComparison.Ordinal) – abatishchev
attention que Assembly! = namespace - certains espaces de noms sont répartis sur plusieurs assemblys. – Bevan
et pourquoi ne pas retourner juste un IEnumerable
Avec Reflection vous pouvez parcourir tous les types d'un assemblage. Un type a une propriété Namespace que vous utilisez pour filtrer uniquement l'espace de nom qui vous intéresse.
Vous devrez fournir un peu plus d'informations ...
Voulez-vous dire en utilisant la réflexion. Vous pouvez itérer un des ensembles Manifest et obtenir une liste des types en utilisant
System.Reflection.Assembly myAssembly = Assembly.LoadFile("");
myAssembly.ManifestModule.FindTypes()
Si c'est juste dans Visual Studio, vous pouvez simplement obtenir la liste dans la fenêtre IntelliSense, ou en ouvrant l'Explorateur d'objets (CTRL + W , J)
- 1. Extraction de toutes les classes d'un espace de noms spécifique
- 2. (ASP.NET) Manière automatique de placer toutes les classes codées dans un espace de noms
- 3. "Masquer" les classes linq dans un espace de noms?
- 4. Regroupement dans un espace de noms et préfixation Classes
- 5. PHP afficher les noms de toutes les classes déclarées?
- 6. Exécuter toutes les tâches avec espace de noms Capistrano
- 7. Comment utiliser un seul espace de noms dans les fichiers?
- 8. Liste toutes les sous-classes avec des noms entièrement qualifiés
- 9. Comment obtenir les noms de toutes les ressources dans un fichier de ressources
- 10. Comment référencer un espace de noms C++ externe à partir d'un espace de noms imbriqué?
- 11. comment sélectionner un élément dans un espace de noms spécifique?
- 12. Comment trouver toutes les classes qui implémentent une interface donnée?
- 13. Dans quel espace de nommage mes classes sont-elles quand je ne mets pas un espace de noms?
- 14. Où chercher les noms d'assemblys .NET qui contiennent une classe ou un espace de noms?
- 15. Espace de noms IInvokeProvider?
- 16. Ajouter un espace de noms aux éléments
- 17. Requête SPARQL - Classe et sous-classe donnent un nom de classe et un espace de noms
- 18. Comment ajouter un autre espace de noms à WCF SyndicationFeed?
- 19. Comment définir un espace de nom par défaut pour les classes quand il y a deux classes similaires dans des espaces de noms différents
- 20. Définir un symbole dans un autre espace de noms
- 21. C# /. NET - Aide, j'ai seulement trois classes dans mon espace de noms System.Web
- 22. Espace de noms System.Data.OracleClient abandonné?
- 23. Pouvez-vous mettre une bibliothèque dans un espace de noms?
- 24. Trouver toutes les classes avec un attribut particulier
- 25. WPF: Espace de noms personnalisé XAML
- 26. Comment puis-je "désutiliser" un espace de noms?
- 27. Comment désérialiser xml avec un espace de noms par défaut?
- 28. Exemples d 'espace de noms
- 29. F # et espace de noms
- 30. espace de noms n'existe pas
duplication possible de [Saisie de toutes les classes d'un nom spécifique space] (http://stackoverflow.com/questions/343869/taking-out-all-classes-of-a-specific-namespace) – nawfal
Copie possible de [Obtenir tous les types dans un espace de nom par réflexion] (https: // stackoverflow.com/questions/79693/getting-all-types-in-a-namespace-via-reflection) – Liam