タイプ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(* Dynamically created dataType object *) '結果は例外的になり、 'list'を' IList'にプリキャストすることで動作します。 –
@Dmitry、それから 'IList'にキャストしてください。この例では、例では*を実行するための最小値を示していたため、例には「Add(...)」がありませんでした。 –