首页 新闻 会员 周边

C#怎么判断类型是否实现指定泛型接口?

0
悬赏园豆:15 [已解决问题] 解决于 2015-07-05 16:06
public interface IA<T> { }
public class B : IA<int> { }
var t = typeof(B);
怎么判断t是否实现IA的?typeof(IA<>).IsAssignableFrom(t)返回false
hourglasser的主页 hourglasser | 初学一级 | 园豆:15
提问于:2015-07-05 15:24
< >
分享
最佳答案
2

:

Array.Exists(typeof(B).GetInterfaces(), t => t.GetGenericTypeDefinition() == typeof(IA<>))
收获园豆:15
liqipeng | 小虾三级 |园豆:1160 | 2015-07-05 15:52
typeof(IA<int>).IsAssignableFrom(typeof(B))

 

liqipeng | 园豆:1160 (小虾三级) | 2015-07-05 15:53

@liqipeng: 第二种方式不行,这种方式就表示我知道泛型的类型了,第一种方式可以。非常感谢你的帮助。

你给的再加一个判断最好了t.IsGenericType,如果接口不是泛型GetGenericTypeDefinition()会报异常。

hourglasser | 园豆:15 (初学一级) | 2015-07-05 16:05

@hourglasser: typeof(IA<int>).IsAssignableFrom(typeof(B))这个我猜到应该不是你要的,:)

liqipeng | 园豆:1160 (小虾三级) | 2015-07-05 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册