我有一个看起来像这样的数据容器的情况:
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。
我的问题有两个部分:
我知道我可能会滥用“动态”来尝试获得我想要的行为,但是有人可以解释为什么上述方法不起作用吗?
处理这种情况的最佳方法是什么?我应该将动态推送到 DataContainer 的“GetData”中并对其进行反泛化吗?
非常感谢!