从对象获取List <T>的类型

3Pi*_*3Pi 3 c# generics list

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

        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;
            }
         }
Run Code Online (Sandbox Code Playgroud)

但是,这将返回System.Collections.Generic.List`1 [[myType,etc,etc]]的List Type.有没有办法从List类型中提取'myType',以进行适当的比较?

das*_*ght 6

使用GetGenericArguments方法:

Type listTypeParam = myListType.GetGenericArguments()[0];
Run Code Online (Sandbox Code Playgroud)

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