Umwandeln eines Objekts in IEnumerable <T>, wobei T nicht bekannt ist

Ich versuche mit Reflection zu spielen und bin auf die folgende Situation gestoßen.

Nehmen wir im folgenden Code an, dass es sich bei 'obj' um einen Typ handeln kannIEnumerable<> oderICollection<> oderIList<>.

Ich möchte dieses System.Object aufIEnumerable<> immerICollection<> undIList<> geerbt vonIEnumerable<> sowieso), so dass ich über die sammlung aufzählen und die einzelnen gegenstände nachdenken möchte.

Die Motivation dahinter ist, dass ich nur versuche zu sehen, wie Serialisierer im Allgemeinen Daten serialisieren würden, und daher versuche ich, diese Situation zu simulieren, in der Hoffnung, auch Reflection zu verstehen.

Ich dachte daran, das Objekt zu werfennicht generisches IEnumerable, dachte aber, dass dies unnötige Boxen von Objekten verursachen würde, wenn wir die tatsächliche Instanz von sagenIEnumerable<int>... denke ich richtig?

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage