名单 不是'IEnumerable'的子类

问题描述 投票:-2回答:1

我想确定一些对象是从IEnumerable派生的,但是反射说List<int>不是IEnumerable的子类。

https://dotnetfiddle.net/an1n62

var a = new List<int>();

// true
Console.WriteLine(a is IEnumerable);

// falsa
Console.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable)));
Console.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable<>)));
Console.WriteLine(a.GetType().IsSubclassOf(typeof(IEnumerable<int>)));

qazxsw poi关键字有效,但我必须在没有关键字的情况下解决这个问题。

c# .net reflection
1个回答
3
投票

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

IsAssignableFrom

typeof(IEnumerable).IsAssignableFrom(a.GetType()) 明确指出:

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

© www.soinside.com 2019 - 2024. All rights reserved.