C#如何确定某个类型是否实现了给定的接口?

时间:2013-02-28 15:09:18

标签: .net inheritance reflection

我希望以下内容返回true

var isIt = IsDisposable(typeof(TextWriter));

其中:

bool IsIDisposable(Type t){
    ??? 
    // I tried:
    //return t.IsSubclassOf(typeof(IDisposable)); //returns false
    // the other t.IsXXX methods don't fit the requirement as far as I can tell
}

2 个答案:

答案 0 :(得分:11)

您可以使用IsAssignableFrom

bool IsDisposable = typeof(IDisposable).IsAssignableFrom(typeof(TextWriter));

DEMO

答案 1 :(得分:5)

我找到了它:Type.GetInterfaces()是我需要的:

bool IsIDisposable(Type t){
    return t.GetInterfaces().Contains(typeof(IDisposable));
}

从文档中,Type.GetInterfaces()返回:

  

类型:System.Type []
  一个Type对象数组,代表所有   接口由当前类型实现或继承