繁体   English   中英

将 object 投到列表中<object><div id="text_translate"><p>由于某些我无法控制的原因,需要定义我的一种方法来接受 object 类型的一个参数。 但我知道这个参数的值实际上是 List 类型,带有一个我不知道的通用参数。</p><p> 我正在尝试将此 object 转换为 List&lt;object&gt;,但不知道如何在不知道确切的通用参数是什么的情况下执行此操作。</p><p> 我想做这样的事情:</p><pre> public static List&lt;object&gt; ConvertToList(object input) { if (input.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List&lt;&gt;))) { //Of course this does not work, because input might for example be of type List&lt;string&gt; return (List&lt;object&gt;) input; } else { return null; } }</pre><p> 我知道,如果我有List&lt;T&gt;而不是object input ,使用以下方法会很容易:</p><pre> return input.Cast&lt;object&gt;()</pre><p> 但不幸的是,我坚持使用 object 参数。 知道如何解决这个问题吗?</p></div></object>

[英]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 参数。 知道如何解决这个问题吗?

你不能投射它,但你可以使用IEnumerableCast将它投射到一个列表中。 这将为您提供List<object>的新实例。 您将无法修改旧列表,但可以使用新列表并修改其元素。

object obj = new List<Whatever>();
List<object> list = ((IEnumerable)obj).Cast<object>().ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM