假设我有一个泛型类型的运行时对象和同一类的原始泛型类型,例如。
var type = (new List<Int32>()).GetType();
var genericListType = typeof(List<>);
我需要一种GetRawGenericType
方法,所以表达式
GetRawGenericType(type) == genericListType
返回true。有没有办法实现这个?
说明:
我不知道对象的类型可能是任何泛型类型。 在我写的代码中,我必须知道确切的泛型类型,因为它将用作Dictionary中的键,例如:
private readonly Dictionary<Type, TValue> Mapping =
new Dictionary<Type, TValue> {
{typeof(IEnumerable<>), *SomeValue*},
...
}
提前感谢你花时间。
答案 0 :(得分:4)
Type.GetGenericTypeDefinition
就是你要找的。 p>
答案 1 :(得分:3)
使用GetGenericTypeDefinition
method:
var type = (new List<Int32>()).GetType();
var genericListType = typeof(List<>);
Console.WriteLine(type.GetGenericTypeDefinition() == genericListType);
显示
true