代码之家  ›  专栏  ›  技术社区  ›  JohanP

使用反射的实例

  •  1
  • JohanP  · 技术社区  · 7 年前

    我有2个属性的类。一个是一个 List<double> Queue<double> . 我只有 Type 运行时的信息。我需要实例化并填充这两个属性。有一般的方法吗?我已经创建了一个方法,它将创建一个 IEnumerable IEnumerable 我不知道该怎么做 Add Enqueue 类型

    2 回复  |  直到 7 年前
        1
  •  0
  •   Erik T.    7 年前

    这个怎么样:

    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>) 插入类型变量。

        2
  •  0
  •   Andrew McCallum    7 年前

    我不知道你有什么问题。但是(对我来说)听起来你想要一个容器类来管理两个不同的数据结构。

    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
    }