获取列表类型<;T>;来自对象

本文关键字:对象 gt 列表 lt 获取 类型 | 更新日期: 2023-09-27 18:21:10

我有一个列表列表,每个列表包含一个不同的对象类。要将元素添加到正确的列表中,我需要能够找到列表的类型。我目前正试图通过这种方式来实现它:

        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]]的列表类型。有没有办法从List的类型中提取"myType",以便进行适当的比较?

获取列表类型<;T>;来自对象

使用GetGenericArguments方法:

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

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

在不显式检查泛型参数类型的情况下,您可以将上述代码重构为:

foreach(object o in DataBase)
    if (o is List<T>)
    {
        (o as List<T>).Add(element)
        break;
    }