Heim >Backend-Entwicklung >C++ >Wie kann ich alle Klassen innerhalb eines bestimmten Namespace in C# abrufen?

Wie kann ich alle Klassen innerhalb eines bestimmten Namespace in C# abrufen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 18:02:15743Durchsuche

How Can I Retrieve All Classes Within a Specific Namespace in C#?

Abrufen aller Klassen innerhalb eines Namespace in C

Das Abrufen aller Klassen innerhalb eines bestimmten Namespace ist in verschiedenen Szenarien unerlässlich. In C# gibt es umfassende Ansätze, um diese Aufgabe zu erfüllen.

Um diesem Bedarf gerecht zu werden, untersuchen wir einen Rückwärtsansatz. Indem wir zunächst alle Typen in einer Assembly auflisten und dann den Namespace jedes Typs untersuchen, können wir die gewünschten Klassen effektiv herausfiltern.

Der folgende Codeausschnitt veranschaulicht diese Technik:

using System.Reflection;

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

An Um die Verwendung zu veranschaulichen, betrachten Sie das folgende Beispiel:

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

In Umgebungen vor .Net 2.0, wo „Assembly.GetExecutingAssembly()“ ist nicht verfügbar. Sie benötigen eine Problemumgehung, um die Assembly wie folgt abzurufen:

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 Methoden können Sie alle Klassen innerhalb eines gewünschten Namespace in C# effektiv auflisten.

Das obige ist der detaillierte Inhalt vonWie kann ich alle Klassen innerhalb eines bestimmten Namespace in C# abrufen?. 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