获取列表类型<;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",以便进行适当的比较?
使用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;
}