Возможно ли в С# получить типы подклассов из базового класса?
Получить классы Child из базового класса
Ответ 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;
}