Отражение на интерфейсах типа в C # - PullRequest
0 голосов
/ 18 апреля 2009

Как я могу отразить интерфейсы, реализованные данным типом (класса или интерфейса) в .NET?

Поскольку отражаемый тип будет общим (как в смысле реализации, так и в семантическом смысле), было бы предпочтительно сделать это без необходимости жестко кодировать имя сборки, хотя я понимаю, что могу получить это имя из Тип класса любого данного типа.

Ответы [ 2 ]

1 голос
/ 18 апреля 2009

Type.GetInterfaces () возвращает только вам объявленные интерфейсы (MSDN должна иметь документацию, объясняющую это). Чтобы получить унаследованные интерфейсы, вы должны сделать работу самостоятельно. Что-то похож на:


using System;
using System.Linq;

public static IEnumerable<Type> GetAllInterfacesForType(this Type type)
{
   foreach (var interfaceType in type.GetInterfaces())
   {
       yield return interfaceType;
       foreach (var t in interfaceType.GetAllInterfacesForType())
           yield return t;
   }
}


public static IEnumerable<Type> GetUniqueInterfacesForType(this Type type)
{ return type.GetAllInterfaces().Distinct(); }


Я записал это с манжеты, так что извините, если он не скомпилирует прямо-таки-да-да-да.

1 голос
/ 18 апреля 2009

Тип вызова. GetInterfaces ().

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