Rzucanie obiektu do IEnumerable <T>, gdzie T nie jest znane

Próbuję grać z Reflection i wpadłem w następującą sytuację.

W poniższym kodzie załóżmy, że „obj” może być typówIEnumerable<> lubICollection<> lubIList<>.

Chciałbym rzucić ten System.Object doIEnumerable<> zawsze (jakICollection<> iIList<> odziedziczyć zIEnumerable<> tak czy inaczej), więc chciałbym wyliczyć kolekcję i użyć refleksji do napisania poszczególnych elementów.

Motywacją stojącą za tym jest po prostu próbowanie sprawdzenia, w jaki sposób Serializery, ogólnie, serializują dane, a więc próbuję symulować tę sytuację w nadziei, że zrozumiemy również Refleksję.

Myślałem o rzuceniu obiektunie-rodzajowy IEnumerable, ale pomyślał, że spowoduje to niepotrzebne boksowanie obiektów, powiedzmy, że jest to rzeczywiste wystąpienieIEnumerable<int>... mam rację?

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?
    }

questionAnswers(2)

yourAnswerToTheQuestion