我有2个属性的课程 . 一个是 List<double> ,另一个是 Queue<double> . 我在运行时只有 Type 信息 . 我需要实例化并填充这两个属性 . 有没有通用的方法这样做?我创建了一个创建 IEnumerable 的方法,因为这是这两个方法的通用接口 . 但是,现在我被一个 IEnumerable 困住了,我不知道如何根据 Type 强制转换为 Add 或 Enqueue .
List<double>
Queue<double>
Type
IEnumerable
Add
Enqueue
这个怎么样:
dynamic collection = Activator.CreateInstance(typeof(List<double>)); if (collection.GetType() == typeof(Queue<double>)) { collection.Enqueue(1); } else if(collection.GetType() == typeof(List<double>)) { collection.Add(1); }
而不是 typeof(List<double>) 你插入你的类型变量 .
typeof(List<double>)
我不确定你的问题是什么 . 但是(对我而言)听起来你想要一个容器类来管理两个不同的数据结构 .
class MyContainerClass<T> : IContainer { private List<T> list; private Queue<T> queue ; public MyContainerClass(){ list = new List<T>(); queue = new Queue<T>(); } public virtual void Add(T value){ //Logic for handling add list.Add(value); queue.Enqueue(value); } public virtual void Remove(T value) { //Logic for handling remove } //Etc }
2 回答
这个怎么样:
而不是
typeof(List<double>)
你插入你的类型变量 .我不确定你的问题是什么 . 但是(对我而言)听起来你想要一个容器类来管理两个不同的数据结构 .