我正在尝试反序列化Generic<T> where T : struct
但是当我调用ctor.Invoke(args);
时,我得到异常“无法创建实例,因为Type.ContainsGenericParameters为true”。
如何传递我想要的通用类型?
答案 0 :(得分:11)
Type.MakeGenericType
可能就是你要找的......
答案 1 :(得分:3)
您必须首先使用泛型类型
上的MakeGenericType方法创建具体类型答案 2 :(得分:2)
假设你有一个Type t
泛型类,它有一个无参数构造函数,以及一个类型数组,用作泛型类的类型参数:
Type t = someType;
Type[] genericTypeParameters = someArrayOfTypeParameters;
替换类型参数的类型数组的元素 当前泛型类型定义并返回一个Type对象 代表结果......类型
然后正常构造对象:
t = t.MakeGenericType(genericTypeParameters);
object instance = Activator.CreateInstance(t);