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;
}
Другие вопросы по тегам