6

我希望以下内容返回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
}
4

2 回答 2

14

您可以使用IsAssignableFrom

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

演示

于 2013-02-28T15:11:58.983 回答
6

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

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

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

Type: System.Type[]
一个 Type 对象数组,表示当前 Type实现或继承的所有接口。

于 2013-02-28T15:11:39.227 回答