Поиск общедоступных классов в каталоге файлов

Я знаю, используя отражение, что могу найти список классов в одной сборке (например, Как получить все классы в текущем проекте с помощью отражения?).

Есть ли способ сделать это только с общедоступными классами в данном каталоге?


person Nodoid    schedule 30.04.2014    source источник
comment
Что такое каталог? Вы имеете в виду реальную папку в вашей системе?   -  person Jeroen Vannevel    schedule 30.04.2014
comment
например, в моем проекте есть каталог fun_classes, который содержит кучу классов SQL для создания таблиц. Я бы хотел изучить этот каталог и извлечь имена классов - хотя он может в равной степени применяться к любому каталогу.   -  person Nodoid    schedule 30.04.2014
comment
Я удалил свой ответ, поскольку включенная вами ссылка на самом деле включает ответ, который ищет общедоступные классы.   -  person Sayse    schedule 30.04.2014


Ответы (1)


Я предполагаю, что вы имеете в виду каталог, содержащий одну или несколько сборок, если это так, вы можете сделать это следующим образом:

var types = new List<Type>();

var paths = Directory.GetFiles("directoryPath", "*.dll", SearchOption.TopDirectoryOnly);

foreach(var path in paths)
{
    types.AddRange(Assembly.LoadFrom(path).GetTypes());
}

Метод GetTypes по умолчанию использует BindingFlags.Public и BindingFlags.Instance. Поэтому вам не нужно дополнительно указывать параметр BindingFlags.

person Selman Genç    schedule 30.04.2014