为了账号安全,请及时绑定邮箱和手机立即绑定

List<int> 不是“IEnumerable”的子类

List<int> 不是“IEnumerable”的子类

C#
达令说 2022-11-21 16:11:26
我想确定某个对象是从 派生的IEnumerable,但反射说List<int>不是 的子类IEnumerable。https://dotnetfiddle.net/an1n62var a = new List<int>();// trueConsole.WriteLine(a is IEnumerable);// falsaConsole.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable)));Console.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable<>)));Console.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable<int>)));is关键字可以找到,但我必须在没有关键字的情况下解决这个问题。
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

做你想做的事,你需要使用IsAssignableFrom

typeof(IEnumerable).IsAssignableFrom(a.GetType())

IsSubclassOf的文档明确说明了这一点:

IsSubclassOf 方法不能用于确定一个接口是否派生自另一个接口,或者一个类是否实现了一个接口。为此目的使用 IsAssignableFrom 方法。


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号