我需要更改List<*DynamicType*>
類型的動態變量的Capacity
屬性。 的問題是,如果不指定變量類型,而不是正確List<*DynamicType*>
,我所能做的最好是將其轉換爲IList
Activator
回報object
-casted變量:轉換爲動態類型變量的通用列表
DynamicTypeBuilder builder = new DynamicTypeBuilder() { ... };
Type dataType = builder.GenerateType(...);
Type listDataType = typeof(List<>).MakeGenericType(dataType);
IList list = (IList)Activator.CreateInstance(listDataType);
一些搜索我只找到一個破解後:
dynamic dynamicList = list;
dynamicList.Capacity = dataRowsCount;
雖然這在我的情況下是可以接受的,但我不知道是否有另一種方法可以做到這一點。
忘記了那個構造函數。因爲我只需要設置這個屬性,所以這樣做非常簡單。我也喜歡你的建議,使用泛型方法來「投射」IList對象,非常好。 –
順便說一句,雖然我可能做錯了什麼,但在我的情況下將'Activator.CreateInstance()'的結果分配給'generic'變量將不起作用,因爲'list.Add(*動態創建的dataType對象*)'導致異常,並將'list'預先轉換爲'IList'。 –
@Dmitry確定,然後投射到'IList'。在示例中,我沒有這麼做,僅僅是因爲我正在說明在示例*中執行操作的最小值,並且該示例沒有添加(...)' –