Wie kann ich alle Klassen in einem Namespace in C # abrufen?
c#
.net
reflection
namespaces
Rückgängig machen
quelle
quelle
Antworten:
Sie müssen es "rückwärts" machen; Listen Sie alle Typen in einer Assembly auf und überprüfen Sie dann den Namespace jedes Typs:
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 .Net 2.0
Assembly.GetExecutingAssembly()
nicht verfügbar ist, benötigen Sie 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); }
quelle
Sie müssen ein wenig mehr Informationen bereitstellen ...
Meinen Sie mit Reflection. Sie können ein Assembly-Manifest durchlaufen und mithilfe eine Liste der Typen abrufen
System.Reflection.Assembly myAssembly = Assembly.LoadFile(""); myAssembly.ManifestModule.FindTypes()
Wenn es sich nur um Visual Studio handelt, können Sie die Liste einfach im Intellisense-Fenster oder durch Öffnen des Objektbrowsers (STRG + W, J) abrufen.
quelle
Mit Reflection durchlaufen Sie alle Typen in einer Baugruppe. Ein Typ verfügt über eine Namespace-Eigenschaft, mit der Sie nur den Namespace filtern, an dem Sie interessiert sind.
quelle