Jak mogę uzyskać wszystkie klasy w przestrzeni nazw w języku C #?
c#
.net
reflection
namespaces
Cofnij
źródło
źródło
Odpowiedzi:
Będziesz musiał to zrobić „wstecz”; wypisz wszystkie typy w zestawie, a następnie sprawdź przestrzeń nazw każdego typu:
using System.Reflection; private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.GetTypes() .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)) .ToArray(); }
Przykład użycia:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
W przypadku czegokolwiek wcześniejszego niż .Net 2.0, gdzie
Assembly.GetExecutingAssembly()
nie jest dostępny, będziesz potrzebować małego obejścia, aby uzyskać zestaw: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); }
źródło
Musisz podać trochę więcej informacji ...
Czy masz na myśli użycie Reflection. Możesz iterować przez Manifest zestawów i uzyskać listę typów przy użyciu
System.Reflection.Assembly myAssembly = Assembly.LoadFile(""); myAssembly.ManifestModule.FindTypes()
Jeśli jest tylko w Visual Studio, możesz po prostu pobrać listę w oknie Intellisense lub otwierając przeglądarkę obiektów (CTRL + W, J)
źródło
Dzięki Reflection możesz przeglądać wszystkie typy w złożeniu. Typ ma właściwość Namespace, której używasz do filtrowania tylko interesującej Cię przestrzeni nazw.
źródło