Heim >Backend-Entwicklung >C++ >Wie erhalte ich alle Klassen aus einem Namespace in C#?

Wie erhalte ich alle Klassen aus einem Namespace in C#?

DDD
DDDOriginal
2024-12-31 17:17:15554Durchsuche

How to Get All Classes from a Namespace in C#?

So rufen Sie alle Klassen innerhalb eines Namespace in C# ab

Das Auflisten aller Klassen innerhalb eines bestimmten Namespace ist in C# durch eine Technik möglich, die untersucht alle Typen innerhalb einer Assembly und filtert sie basierend auf ihren Namespaces. Hier ist der Ansatz im Detail:

using System.Reflection;

private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
    return assembly.GetTypes()
                    .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
                    .ToArray();
}

Beispielverwendung:

Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
    Console.WriteLine(typelist[i].Name);
}

Vor .Net 2.0, wo Assembly.GetExecutingAssembly() nicht verfügbar war, gab es einen alternativen Ansatz mit typeof() erforderlich, 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);
}

Durch die Verwendung dieser Techniken können Entwickler alle darin enthaltenen Klassen effektiv abrufen ein bestimmter Namespace, der eine dynamische Klassenaufzählung in C#-Anwendungen ermöglicht.

Das obige ist der detaillierte Inhalt vonWie erhalte ich alle Klassen aus einem Namespace in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn