反映C#中类型的接口

时间:2009-04-18 05:14:38

标签: c# reflection interface

如何反思.NET中给定类型(类或接口)实现的接口?

由于反映的类型将是通用的(无论是在实现意义上还是语义意义上),最好不要对程序集名称进行硬编码,但我知道我可以从中获取此名称任何给定类型的Type类。

2 个答案:

答案 0 :(得分:1)

调用Type.GetInterfaces()。

答案 1 :(得分:1)

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(); }


我把它从袖口上写下来,很抱歉,如果它没有编译直接outta-da-box。