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!