[英]Cast object to List<object>
由于某些我无法控制的原因,需要定义我的一种方法来接受 object 类型的一个参数。 但我知道这个参数的值实际上是 List 类型,带有一个我不知道的通用参数。
我正在尝试将此 object 转换为 List<object>,但不知道如何在不知道确切的通用参数是什么的情况下执行此操作。
我想做这样的事情:
public static List<object> ConvertToList(object input)
{
if (input.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>)))
{
//Of course this does not work, because input might for example be of type List<string>
return (List<object>) input;
}
else
{
return null;
}
}
我知道,如果我有List<T>
而不是object input
,使用以下方法会很容易:
return input.Cast<object>()
但不幸的是,我坚持使用 object 参数。 知道如何解决这个问题吗?
你不能投射它,但你可以使用IEnumerable
和Cast
将它投射到一个列表中。 这将为您提供List<object>
的新实例。 您将无法修改旧列表,但可以使用新列表并修改其元素。
object obj = new List<Whatever>();
List<object> list = ((IEnumerable)obj).Cast<object>().ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.