c# - 从对象中获取 List<T> 的类型

标签 c# list generics

我有一个列表列表,每个列表包含不同类别的对象。要将元素添加到正确的列表中,我需要能够找到列表的类型。我目前正在尝试以这种方式完成它:

        foreach(object o in DataBase)
        {
            Type t = o.GetType();
            if (t != typeof(T))
                continue;
            else
            {
                List<T> L = (List<T>)o;
                L.Add(element);
                break;
            }
         }

但是,这会返回 System.Collections.Generic.List`1[[myType,etc,etc]] 的列表类型。 有没有办法从 List 的类型中提取“myType”,以便进行适当的比较?

最佳答案

使用GetGenericArguments方法:

Type listTypeParam = myListType.GetGenericArguments()[0];

因为 myListType 是一个只有一个类型参数的泛型类型的实例,类型 T 将在返回数组的第 0 个位置返回。

关于c# - 从对象中获取 List<T> 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8966252/

相关文章:

c# - c# - web api中 "$"关键字的用途是什么

python - 类中定义的变量在 Python 3 中给出错误

python - 如何迭代配对值,以及如何从您正在使用的列表中命名变量?

java - 实际参数…无法通过方法调用转换转换为…

scala - 类型上限允许子类型但不允许父类型

c# - 在一个项目中如何设置一个 "client"控制台应用程序和一个 "server"控制台应用程序

c# - REST API URL 模式

c# - 使用 IoC 链接层,将下层回调设置为上层并避免循环引用

list - PowerShell脚本从列表中删除文件和已删除文件的输出列表

c - 尝试实现一个从用户那里获取功能的通用链表