我有typeof(List<T>)
作为Type对象,但我需要typeof(List<>)
我可以使用MakeGenericType()
来检索List的类型对象,是否可能?
更新:伙计们,谢谢。这似乎是一个微不足道的问题。但无论如何,我支持所有人并接受了第一个答案。
答案 0 :(得分:4)
答案 1 :(得分:3)
如果我正确地解决了您的问题,您有一个通用类型(List<int>
)和另一种类型(比方说long
),您想要制作一个List<long>
。这可以这样做:
Type startType = listInt.GetType(); // List<int>
Type genericType = startType.GetGenericTypeDefinition() //List<T>
Type targetType = genericType.MakeGenericType(secondType) // List<long>
但是,如果您使用的类型确实是列表,那么如果您实际使用它可能会更清楚:
Type targetType = typeof(List<>).MakeGenericType(secondType) // List<long>
答案 2 :(得分:1)
答案是Type.GetGenericTypeDefinition:
http://msdn.microsoft.com/en-us/library/system.type.getgenerictypedefinition.aspx
示例:
var t = typeof(List<string>);
var t2 = t.GetGenericTypeDefinition();
然后可以这样做:
var t = typeof(List<>);
var t2 = t.MakeGenericType(typeof(string));
答案 3 :(得分:1)
我认为你的意思是实现类似下面的东西?
var list = new List<int>();
Type intListType = list.GetType();
Type genericListType = intListType.GetGenericTypeDefinition();
Type objectListType = genericListType.MakeGenericType(typeof(object));