[英]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.