![](/img/trans.png)
[英]Cannot create an instance of because Type.ContainsGenericParameters is true
[英]C# Cannot create an instance because Type.ContainsGenericParameters is true
我试图反序列化Generic<T> where T : struct
但是当我调用ctor.Invoke(args);
我得到异常“无法创建实例,因为Type.ContainsGenericParameters为true”。
如何传递我想要的泛型类型?
Type.MakeGenericType
可能就是你要找的......
您必须首先使用泛型类型的MakeGenericType方法创建具体类型
假设你有一个泛型类的Type t
,它有一个无参数的构造函数,以及一个用作泛型类的类型参数的类型数组:
Type t = someType;
Type[] genericTypeParameters = someArrayOfTypeParameters;
调用Type.MakeGenericType()
,其中
用当前泛型类型定义的类型参数替换类型数组的元素,并返回表示结果...类型的Type对象
然后正常构造对象:
t = t.MakeGenericType(genericTypeParameters);
object instance = Activator.CreateInstance(t);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.