Come posso ottenere tutte le classi all'interno di un namespace in C#?Come posso ottenere tutte le classi in uno spazio dei nomi?
risposta
Sarà necessario farlo "all'indietro"; elencare tutti i tipi in un assieme e poi controllando lo spazio dei nomi di ogni tipo:
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return
assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
Esempio di utilizzo:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
Per nulla prima Net 2.0 dove Assembly.GetExecutingAssembly()
non è disponibile, è sarà necessario un piccolo rimedio per ottenere l'assemblea:
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
Inoltre, mantieni attenzione all'assemblaggio! = spazio dei nomi: alcuni spazi dei nomi sono distribuiti su più assiemi. – Bevan
e perché non restituire solo un IEnumerable
Con Reflection si esegue il ciclo di tutti i tipi in un assieme. Un tipo ha una proprietà Namespace che si usa per filtrare solo lo spazio dei nomi che ti interessa.
Avrete bisogno di fornire un po 'più di informazioni ...
cosa si intende per utilizzando Reflection. È possibile scorrere un'assemblee Manifest e ottenere un elenco dei tipi di utilizzo
System.Reflection.Assembly myAssembly = Assembly.LoadFile("");
myAssembly.ManifestModule.FindTypes()
Se è solo in Visual Studio, si può solo ottenere l'elenco nella finestra di IntelliSense, o aprendo il Visualizzatore oggetti (CTRL + W , J)
- 1. "template" uno spazio dei nomi
- 2. In PHP, c'è un modo per ottenere tutte le classi dichiarate in uno spazio dei nomi specifico?
- 3. Ottieni l'elenco delle classi nello spazio dei nomi in C#
- 4. Come ottenere tutti i nomi di classe in uno spazio dei nomi in Ruby?
- 5. come applicare una soluzione di aspetto Postsharp ampia (tutte le classi nello spazio dei nomi)
- 6. Come posso fare esplicitamente riferimento a uno spazio dei nomi che racchiude quando esiste uno spazio dei nomi in linea?
- 7. Come posso deserializzare xml con uno spazio dei nomi predefinito?
- 8. Che cos'è uno spazio dei nomi?
- 9. C# aggiungi utilizzando la dichiarazione per lo spazio dei nomi per tutte le classi
- 10. Sostituire le classi nello spazio dei nomi di sistema
- 11. Carica Ruby gem in uno spazio dei nomi definito dall'utente
- 12. Spazio dei nomi XSD nello spazio dei nomi C#
- 13. Ottenere IllegalStateException quando ricarico uno spazio dei nomi nel
- 14. Come dichiarare uno spazio dei nomi in XAML WPF?
- 15. Come avviare REPL in uno spazio dei nomi definito dall'utente?
- 16. Come verificare l'esistenza di uno spazio dei nomi in php
- 17. Passare in rassegna tutte le classi in un determinato spazio dei nomi e creare un oggetto per ciascuno?
- 18. Come utilizzare le classi php predefinite nel mio spazio dei nomi?
- 19. Ottenere Elenco di tutte le classi native
- 20. come posso elencare tutto lo spazio dei nomi in XML?
- 21. Ottenere tutte le Classi estesi in PHP
- 22. Come si crea uno spazio dei nomi Python (valore argparse.parse_args)?
- 23. Corrispondenza spazio dei nomi
- 24. Come utilizzare MySQLi all'interno di uno spazio dei nomi
- 25. Ottenere elementi con spazio dei nomi predefinito (nessun prefisso dello spazio dei nomi) utilizzando XPath
- 26. Che cosa significa "dichiarare indirettamente uno spazio dei nomi all'interno di un altro spazio dei nomi"?
- 27. Utilizzo di profili Spring in uno spazio dei nomi
- 28. Come salvare tutte le eccezioni in un determinato spazio dei nomi?
- 29. Rails 3.2 - Come reindirizzare a uno spazio dei nomi?
- 30. C++: funzioni Extern C all'interno di uno spazio dei nomi
possibile duplicato di [Estrarre tutte le classi di un nome specifico spazio] (http://stackoverflow.com/questions/343869/taking-out-all-all-classes-of-a-specific-namespace) – nawfal
Possibile duplicato di [Ottenere tutti i tipi in un namespace tramite riflessione] (https: // stackoverflow.com/questions/79693/getting-all-types-in-a-namespace-via-reflection) – Liam