Wie kann ich alle Klassen innerhalb eines Namensraums in C# bekommen?Wie kann ich alle Klassen innerhalb eines Namensraums erhalten?
Antwort
Sie müssen es "rückwärts" tun; Liste alle Typen in einer Assembly und dann den Namensraum für jeden Typ Überprüfung:
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return
assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
Anwendungsbeispiel:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
Für alles, was vor dem .Net 2.0, wo Assembly.GetExecutingAssembly()
nicht verfügbar ist, können Sie benötigt eine kleine Problemumgehung, um die Assembly zu erhalten:
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
Halten Sie auch in Beachten Sie, dass Assembly! = Namespace - einige Namespaces sind auf mehrere Assemblys verteilt. – Bevan
und warum nicht nur ein IEnumerable
Mit Reflection durchlaufen Sie alle Typen in einer Baugruppe. Ein Typ hat eine Namespace-Eigenschaft, die Sie nur den Namespace-Filter verwenden, um die Sie sich interessieren.
Sie werden ein wenig mehr Informationen zur Verfügung stellen müssen ...
Sie mithilfe Reflexion bedeuten Sie. Sie können eine Baugruppen durchlaufen Manifest und eine Liste der Arten erhalten mit
System.Reflection.Assembly myAssembly = Assembly.LoadFile("");
myAssembly.ManifestModule.FindTypes()
Wenn es nur in Visual Studio, können Sie sich nur die Liste im IntelliSense-Fenster oder durch den Objektkatalog (CTRL + W öffnen , J)
möglich duplicate of [Herausnehmen aller Klassen eines bestimmten Namens Leerzeichen] (http://stackoverflow.com/questions/343869/taking-out-all-classes-of-a-specific-namespace) – nawfal
Mögliches Duplikat von [Alle Typen in einem Namespace durch Reflektion abrufen] (https: // stackoverflow.com/questions/79693/getting-all-types-in-a-namespace-via-reflection) – Liam