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

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

Ответ 1

Учитывая экземпляр a для System.Reflection.Assembly, вы можете получить все типы в сборке, используя:

var allTypes = a.GetTypes();

Это даст вам все типы, общедоступные, внутренние и частные.

Если вы хотите только публичные типы, вы можете использовать:

var publicTypes = a.GetExportedTypes();

Если вы используете этот код из самой сборки, вы можете получить сборку, используя

var a = Assembly.GetExecutingAssembly();

GetTypes и GetExportedTypes предоставят вам все типы (структуры, классы, перечисления, интерфейсы и т.д.), поэтому, если вам нужны только классы, вам придется фильтровать

var classes = a.GetExportedTypes().Where(t => t.IsClass);