c#create instance并在给定类型的集合中添加元素,可以是:数组,列表,字典,队列,堆栈

问题描述 投票:0回答:1

我有以下代码

public void example(Type t)
{
    var collector = (ICollection)Activator.CreateInstance(t);

    Debug.Log(collector);
}

这打印

System.Collections.Generic.List`1[System.Int32]
System.Collections.ArrayList

但我需要添加元素


更好地解释自己

我有ICollection的类型,我需要把它带到一个允许我添加或插入元素的通用结构

public void example(Type t){

   var my_collector = new AnyClass((ICollection)Activator.CreateInstance(t));

   collector.Add(new element());
   //or
   collector.insert(new element(),0);
}

但是,我对打印元素不感兴趣,我这样做是为了展示将要出现的收藏家类型。我只对在新的ICollector中添加或插入元素感兴趣

无论如何,谢谢你的回答

c# arrays list arraylist generic-collections
1个回答
0
投票

您无法向ICollection添加元素。您需要将“收集器”向下转换为IList,Queue或Stack:

switch (collector)
{
    case IList list:
        list.Add("something");
        break;
    case Queue queue:
        queue.Enqueue("something");
        break;
    case Stack stack:
        stack.Push("something");
        break;
}
© www.soinside.com 2019 - 2024. All rights reserved.