c#:将对象转换为通用列表

时间:2018-05-18 09:54:22

标签: c# .net generics type-conversion

我有一个数据结构,其中变量的类型为object。但是,我知道在运行时期间,此对象肯定是List<T>,其中T应涵盖多个案例(例如intstring,...)。在下面的代码中,我想使用List<T>特定的功能,例如Linq函数。

通过以下检查,我确定,这是一个列表:

if (constantExpression.Value.GetType().GetGenericTypeDefinition() == typeof(List<>)) 
{
    // Want to use Linq here
}

这可能吗?不幸的是,我在网上找不到任何帮助。

1 个答案:

答案 0 :(得分:2)

如果您可以将您的列表作为List<object>()处理,则可以执行以下操作:

var listOfObjects = ((IEnumerable)constantExpression.Value).Cast<object>();

这远非完美,但如果您不想诉诸于使用反射或使用dynamic,那么它可能是最好的,如评论中所建议的那样。