Как я могу получить все классы в пространстве имен?

Как я могу получить все классы в пространстве имен в С#?

Ответ 1

Вам нужно будет сделать это "назад"; перечислить все типы в сборке и затем проверить пространство имен каждого типа:

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

Пример использования:

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

Для .net 1.0.4 и других версий, где "Assembly.GetExecutingAssembly()" не поддерживается, вам понадобится небольшое обходное решение для сборки:

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);
}

Ответ 2

Вам нужно предоставить немного больше информации...

Вы имеете в виду, используя Reflection. Вы можете проходить через манифест Ассамблеи и получить список типов, используя

   System.Reflection.Assembly myAssembly = Assembly.LoadFile("");

   myAssembly.ManifestModule.FindTypes()

Если это просто в Visual Studio, вы можете просто получить список в окне intellisense или открыть браузер объектов (CTRL + W, J)

Ответ 3

С Reflection вы прокрутите все типы в сборке. Тип имеет свойство Namespace, которое вы используете для фильтрации только интересующего пространства имен.