我想確定某個對象是從 派生的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 方法不能用于確定一個接口是否派生自另一個接口,或者一個類是否實現(xiàn)了一個接口。為此目的使用 IsAssignableFrom 方法。
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消