在下面的示例中,如果something类型为,我想抛出一个异常IEnumerable:
var something = new List<int>();
if (something.GetType().IsAssignableFrom(typeof(IEnumerable)))
{
throw new ArgumentOutOfRangeException("Cannot create a key from type IEnumerable");
}
Run Code Online (Sandbox Code Playgroud)
据我了解,IsAssignableFrom在上述情况下应该返回true,因为List<int>肯定是一个IEnumerable。
您当前的代码检查是否可以分配IEnumerable给List<int>,这就是为什么它返回false的原因。
您需要采用另一种方法:
typeof(IEnumerable).IsAssignableFrom(something.GetType())
Run Code Online (Sandbox Code Playgroud)
快速测试:
Console.WriteLine(typeof(IEnumerable).IsAssignableFrom(typeof(List<int>)));
Console.WriteLine(typeof(List<int>).IsAssignableFrom(typeof(IEnumerable)));
Run Code Online (Sandbox Code Playgroud)
版画
True
False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |