次のようなデータ コンテナーがある状況があります。
public class DataContainer<T>
{
public T GetData { get; private set; }
public DataContainer(T data)
{
this.GetData = data;
}
}
しかし残念ながら、これらのコンテナーのリストが必要です。それぞれの汎用パラメーターは実行時まで不明であり、要素ごとに異なる可能性があります。私は最初に次のようなもので実行しようとしました:
IList<DataContainer<dynamic>> containerList = new List<DataContainer<dynamic>>();
containerList.add((dynamic)new DataContainer<int>(4));
containerList.add((dynamic)new DataContainer<string>("test"));
残念ながらこれは機能しません (RuntimeBinderException が発生します)。最初に (DataContainer) へのキャストを試みましたが、そこで InvalidCastException が発生しました。
私の質問には2つの部分があります:
おそらく「動的」を悪用して、必要な動作を取得しようとしていることは理解していますが、上記が機能しない理由を誰かが説明できますか?
この状況にアプローチする最善の方法は何ですか? ダイナミックを DataContainer の「GetData」にプッシュして、非ジェネリック化する必要がありますか?
本当にありがとう!