我有以下代码
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中添加或插入元素感兴趣
无论如何,谢谢你的回答
您无法向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;
}