簡體   English   中英

反映類使用類型t實例化類

[英]Instantiate class using Type t as reflected

我有以下代碼。 t在第二行顯示為無效。

Cannot resolve symbol 't'

如何使用Type t實例化泛型類。

Type t = currentProperty.PropertyType;
var x = new MyClass<t>();

謝謝

泛型僅是編譯時功能,不是運行時功能。 您需要使用反射創建類。

Type t = currentProperty.PropertyType;
Type desiredType = typeof(MyClass<>).MakeGenericType(t);
var instance = Activator.CreateInstance(desiredType);

t是在運行時計算的類型對象 您不能在C#編譯器期望編譯時類型為name的地方使用它。 編譯器給您該錯誤,因為它找不到文字名稱為“ t”的類型。

但是哈克,盡管還不那么簡單,您仍然可以做自己想做的事情:

var t = currentProperty.PropertyType;
var genericType = typeof(MyClass<>).MakeGenericType(t);
var x = Activator.CreateInstance(genericType);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM