我想确定某个对象是从 派生的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 方法。
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消