Как найти иерархию наследования интерфейса для типа? - PullRequest
4 голосов
/ 05 августа 2010

Моя цель - выяснить, реализует ли класс интерфейс напрямую.В приведенном ниже примере класс B реализует интерфейс IB, а интерфейс IB реализует IA.

Как узнать иерархию наследования?Когда мы просматриваем тип в Object Browser, он показывает подробную иерархию.Как мне добиться подобного результата?

interface IA
{
    string Member1 { get;set; }
}

interface IB : IA
{
    string Member2 { get; set; }
}

class B : IB
{
    public string Member1 { get; set; }
    public string Member2 { get; set; }
}

Снимок экрана рефлектора

альтернативный текст http://img571.imageshack.us/img571/7485/49211426.png

На снимке с экрана отражателя показаноИерархия интерфейсов.

Как узнать иерархию интерфейсов для Типа.

1 Ответ

3 голосов
/ 09 февраля 2011

Reflection и ядро ​​.NET созданы для быстрого использования интерфейсов. Таким образом, Type.GetInterfaces возвращает все интерфейсы, на которые может отвечать тип, «выравнивая» иерархию интерфейсов в процессе.

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

...