繁体   English   中英

C#无法创建实例,因为Type.ContainsGenericParameters为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM