Как я могу получить все классы в пространстве имен в C #?
c#
.net
reflection
namespaces
Отменить
источник
источник
Ответы:
Вам нужно будет сделать это «задом наперед»; перечислите все типы в сборке и затем проверьте пространство имен каждого типа:
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 2.0
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); }
источник
Вам нужно будет предоставить немного больше информации ...
Вы имеете в виду, используя Reflection. Вы можете перебирать манифест сборок и получать список типов, используя
System.Reflection.Assembly myAssembly = Assembly.LoadFile(""); myAssembly.ManifestModule.FindTypes()
Если это только в Visual Studio, вы можете просто получить список в окне intellisense или открыв обозреватель объектов (CTRL + W, J)
источник
С помощью Reflection вы перебираете все типы в сборке. Тип имеет свойство Namespace, которое вы используете для фильтрации только интересующего вас пространства имен.
источник