Приведение объекта к 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?
}