1 回答

TA貢獻1831條經驗 獲得超9個贊
基本上,如果您有一個類型 object Type theType,則需要執行以下操作:
var listType = typeof(List<>);
var typeParams = new [] {theType};
var listOfTType = listType.MakeGenericType(typeParams);
var newListOfT = Activator.CreateInstance(listOfTType);
此時,您有一個 type 變量object,但它引用了一個 type 對象List<WhateverYourTypeIs>。說,theTypeis typeof(int),那么你將有一個 的對象List<int>。不過,將它轉換為可用的東西是另一個問題。如果你想在這個列表中添加一些東西,我懷疑最好的方法是MethodInfo為Add方法和Invoke它獲取一個。
如果類型具有默認構造函數并且創建起來不太昂貴,我想到了另一種方法來做到這一點。這是一個示例(創建一個List<int>- 但這只是我編碼的方式):
var type = typeof(int);
var dummy = Activator.CreateInstance(type);
var listOfType = new[] {dummy}.ToList();
完成后,listOfType變量的類型為 aList<object>但指的是 a List<int>。它主要是可行的 - 例如,您可以調用Add(object someObj)它。你不會得到編譯類型參數類型檢查,但你可以使用它。
- 1 回答
- 0 關注
- 184 瀏覽
添加回答
舉報