首页 文章

使用Reflection的实例

提问于
浏览
1

我有2个属性的课程 . 一个是 List<double> ,另一个是 Queue<double> . 我在运行时只有 Type 信息 . 我需要实例化并填充这两个属性 . 有没有通用的方法这样做?我创建了一个创建 IEnumerable 的方法,因为这是这两个方法的通用接口 . 但是,现在我被一个 IEnumerable 困住了,我不知道如何根据 Type 强制转换为 AddEnqueue .

2 回答

  • 0

    这个怎么样:

    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>) 你插入你的类型变量 .

  • 0

    我不确定你的问题是什么 . 但是(对我而言)听起来你想要一个容器类来管理两个不同的数据结构 .

    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
    }
    

相关问题