如何反思.NET中给定类型(类或接口)实现的接口?
由于反映的类型将是通用的(无论是在实现意义上还是语义意义上),最好不要对程序集名称进行硬编码,但我知道我可以从中获取此名称任何给定类型的Type类。
答案 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。