Jak Mogę uzyskać wszystkie klasy w przestrzeni nazw?

Jak mogę pobrać wszystkie klasy w przestrzeni nazw w C#?

Author: Undo, 2009-06-04

3 answers

Będziesz musiał to zrobić "wstecz"; wymień wszystkie typy w złożeniu, 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 przed. Net 2.0, gdzie Assembly.GetExecutingAssembly() nie jest dostępna, będziesz potrzebował małego obejścia, aby uzyskać montaż:

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);
}
 115
Author: Fredrik Mörk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-07 03:44:24

Musisz podać trochę więcej informacji...

Masz na myśli użycie odbicia. Można iterację za pomocą manifestu złożeń i uzyskać listę typów używając
   System.Reflection.Assembly myAssembly = Assembly.LoadFile("");

   myAssembly.ManifestModule.FindTypes()

Jeśli jest tylko w Visual Studio, możesz pobrać listę w oknie intellisense lub otwierając przeglądarkę obiektów (CTRL+W, J)

 5
Author: Eoin Campbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 08:34:09

Z odbiciem można przejść przez wszystkie typy w złożeniu. Typ ma właściwość przestrzeni nazw, której używasz do filtrowania tylko interesującej Cię przestrzeni nazw.

 0
Author: Gerrie Schenck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 08:32:56