C# создает экземпляр и добавляет элементы в коллекцию, учитывая тип, который может быть: Массивы, Списки, Словари, Очереди, Стеки
У меня есть следующий код
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
В любом случае, спасибо за ваши ответы
1 ответ
Вы не можете добавлять элементы в 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;
}