[英]Cast object to IEnumerable<object>?
如何将object
为IEnumerable<object>
?
我知道该对象实现了IEnumerable<object>
但我不知道它是什么类型。 它可以是一个数组,一个List<T>
,或者其他什么。
一个简单的测试用例我正在努力工作:
static void Main(string[] args)
{
object arr = new[] { 1, 2, 3, 4, 5 };
foreach (var item in arr as IEnumerable<object>)
Console.WriteLine(item);
Console.ReadLine();
}
没有具体的用例,很难回答这个问题,但是你可能会发现只需转换到非通用的IEnumerable
接口就足够了。
对于大多数被认为是“序列”的类型,这通常有两个原因。
IEnumerable
。 IEnumerable<T>
接口继承自IEnumerable
,因此转换应该适用于System.Collections.Generic,LINQ序列等中的泛型集合类。 编辑 :
至于为什么你提供的样本不起作用:
IEnumerable<Derived>
视为IEnumerable<Base>
。 IEnumerable<T>
是协变的,但这在C#4中不起作用,因为值类型不支持方差 - 来自int[]
( IEnumerable<int>
) - > IEnumerable<object>
不能成功。 我遇到了同样的问题,协方差不支持值类型,我有一个object
和实际类型的List<Guid>
,需要一个IEnumerable<object>
。 只有IEnumerable不够好才能生成IEnumerable的方法是使用linq Cast方法
((IEnumerable)lhsValue).Cast<object>()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.