我一直在寻找这个问题。我想知道如何获取传递给创建列表的模板类型。例如。
List<string> listOfStrings = new List<string>();
我如何从中获取字符串类型?我知道如何使用类型来获取字段并查找列表类型,但不知道其中的模板。
答案 0 :(得分:2)
在这种情况下,你可以像这样得到它
Type genericType = listOfStrings.GetType().GetGenericArguments()[0];
请注意,如果您在非泛型类型上尝试此操作,它将失败,因为GetGenericArguments数组的长度将为0,但您当然可以采取措施来控制数组的长度。
答案 1 :(得分:0)
您是在谈论获取此列表中存储的项目类型吗?
listOfStrings[0].GetType()
将返回您的类型。
编辑:
这是正确的解决方案:
Type type = listOfStrings.GetType();
Type itemType = type.GetGenericArguments()[0];
答案 2 :(得分:0)
但也许他想知道如何在调用函数时获得T ...
void MyFunc<T>(List<T> list) {
/// T is the type passed to the List<T>, so for a List<int>, T is int
T element = default(T);
list.Add(element);
}