簡體   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