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

我想确定某个对象是从 派生的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>)));

is关键字可以找到,但我必须在没有关键字的情况下解决这个问题。


达令说
浏览 124回答 1
1回答

慕田峪7331174

做你想做的事,你需要使用IsAssignableFrom:typeof(IEnumerable).IsAssignableFrom(a.GetType())IsSubclassOf的文档明确说明了这一点:IsSubclassOf 方法不能用于确定一个接口是否派生自另一个接口,或者一个类是否实现了一个接口。为此目的使用 IsAssignableFrom 方法。
打开App,查看更多内容
随时随地看视频慕课网APP