Подтвердить что ты не робот

Получить классы Child из базового класса

Возможно ли в С# получить типы подклассов из базового класса?

4b9b3361

Ответ 1

Не напрямую, однако вы можете использовать AppDomain.GetAssemblies() для получения всех загруженных в настоящее время сборок, а затем использовать Assembly.GetTypes(), чтобы получить все типы в этой сборке. Затем используйте Type.IsSubclassOf(), чтобы определить, является ли это подклассом типа, который вы используете.

Ответ 2

Вы можете сделать это:

var subclassTypes = Assembly
   .GetAssembly(typeof(BaseClass))
   .GetTypes()
   .Where(t => t.IsSubclassOf(typeof(BaseClass)));

Ответ 3

вы можете выбрать сборку, которую хотите проверить, получить типы с помощью метода Assembly.GetTypes() и проверить для каждого из них, если это подкласс с Type.IsSubclassOf()

см. Элементы сборки и Элементы типа

Ответ 4

попробуйте этот код:

public static IEnumerable<Type> GetAllSubclassOf(Type parent)
{
    foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
        foreach (var t in a.GetTypes())
            if (t.IsSubclassOf(parent)) yield return t;
}