Получение имени родительского класса с помощью Reflection - PullRequest
38 голосов
/ 06 октября 2009

Как я могу получить имя родительского класса некоторого класса, используя Reflection?

Ответы [ 8 ]

55 голосов
/ 06 октября 2009

Вроде так:

typeof(Typ).BaseType.Name
21 голосов
/ 23 ноября 2015

Я пришел к этому вопросу, ища класс, который объявляет вложенный класс, который является DeclaringType.

this.GetType().DeclaringType.Name

Может быть, не то, что спросил ОП, но, может быть, кто-то другой пришел сюда с теми же критериями поиска, что и я. ; -)

18 голосов
/ 06 октября 2009
obj.GetType().BaseType.Name
7 голосов
/ 06 октября 2009

Вы можете использовать:

string baseclassName = typeof(MyClass).BaseType.Name;
5 голосов
/ 24 марта 2011

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

yourRefVar.GetType().UnderlyingSystemType.Name

5 голосов
/ 06 октября 2009
        Type type = obj.GetType();
        Type baseType = type.BaseType;
        string baseName = baseType.Name;
2 голосов
/ 22 августа 2017

В настоящее время в .NET Core BaseType недоступен, его можно получить по:

typeof(T).GetTypeInfo().BaseType
0 голосов
/ 22 января 2019

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

do
{
    if (type.IsInterface)
        if (type.BaseType == null)
            break;

    if (type.IsClass)
        if (type.BaseType == typeof(object))
            break;

    type = type.BaseType;

} while (true);

string ultimateBaseTypeName = type.Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...