Учитывая Тип C#, Получите его Базовые классы и Реализованные Интерфейсы

Я извлек уроки из Учебное руководство Python!

6
задан Mark P Neyer 1 December 2009 в 02:34
поделиться

3 ответа

Тип имеет свойство BaseType и метод FindInterfaces.

https://msdn.microsoft.com/en-us/library/system.type.aspx

На самом деле, это почти так. иметь Type.GetAllBaseClassesAndInterfaces ,

8
ответ дан 8 December 2019 в 02:41
поделиться

Вы можете написать такой метод расширения:

public static IEnumerable<Type> GetBaseTypes(this Type type) {
    if(type.BaseType == null) return type.GetInterfaces();

    return Enumerable.Repeat(type.BaseType, 1)
                     .Concat(type.GetInterfaces())
                     .Concat(type.GetInterfaces().SelectMany<Type, Type>(GetBaseTypes))
                     .Concat(type.BaseType.GetBaseTypes());
}
17
ответ дан 8 December 2019 в 02:41
поделиться

Используйте этот код:

Func<Type, List<Type>> f = ty =>
{
    var tysReturn = new List<Type>();
    if (ty.BaseType != null)
    {
        tysReturn.Add(ty.BaseType);
    }
    tysReturn.AddRange(ty.GetInterfaces());
    return tysReturn;
};

Функция f принимает тип и возвращает список его базового типа и интерфейсов.

Надеюсь, это поможет.

1
ответ дан 8 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: