Приведение объекта к IEnumerable <T>, где T неизвестно

Я пытаюсь поиграть с Reflection и столкнулся со следующей ситуацией.

В следующем коде давайте предположим, что "obj"; может быть типовIEnumerable<> или жеICollection<> или жеIList<>.

Я хотел бы разыграть эту Систему.IEnumerable<> всегда (какICollection<> а такжеIList<> наследовать отIEnumerable<> в любом случае), так что я хотел бы перечислить коллекцию и использовать отражение для написания отдельных элементов.

Мотивация заключается в том, что я просто пытаюсь понять, как сериализаторы, в общем, сериализуют данные, и поэтому я пытаюсь смоделировать эту ситуацию в надежде понять и Reflection.

Я думал о том, чтобы бросить объектnon-generic IEnumerable, но подумал, что это приведет к ненужной упаковке объектов, когда, скажем, фактический экземплярIEnumerable<int>... я правильно думаю?

private void WriteGenericCollection(object obj)
    {
        Type innerType = obj.GetType().GetGenericArguments()[0];

        //Example: IEnumerable<int> or IEnumerable<Customer>
        Type generatedType = typeof(IEnumerable<>).MakeGenericType(innerType);

        //how could i enumerate over the individual items?
    }

Ответы на вопрос(2)

Ваш ответ на вопрос