Як я можу отримати всі класи в просторі імен у C #?
Як я можу отримати всі класи в просторі імен у C #?
Відповіді:
Вам потрібно буде зробити це «назад»; перерахувати всі типи в збірці, а потім перевірити простір імен кожного типу:
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 ви прокручуєте всі типи в збірці. Тип має властивість простору імен, яке ви використовуєте для фільтрування лише того простору імен, який вас цікавить.