Array eines beliebigen Typs in ListT (C #) konvertieren

8

Die folgende Funktion akzeptiert ein Objekt, das manchmal ein Array eines bestimmten Typs sein kann. In diesem Fall könnte der Typ mit obj [0] .GetType () bestimmt werden, vorausgesetzt, das Array hat mindestens ein Mitglied. Ich möchte ein solches Array in eine generische Liste & lt; T & gt; des entsprechenden Typs, aber der folgende Code kann nur in die Liste & lt; Objekt & gt; umgewandelt werden. Wie kann das gemacht werden?

%Vor%

Beachten Sie, dass GetSerializedObject () eine Funktion implementiert, die zur IDataContractSurrogate-Schnittstelle gehört. Daher glaube ich nicht, dass ich die Signatur wie gezeigt ändern kann.

    
nw. 16.12.2009, 20:47
quelle

2 Antworten

16

Wenn Sie den Typ zum Zeitpunkt der Kompilierung nicht kennen, sollten Sie eine generische Methode dafür erstellen und sie dann per Reflektion aufrufen. Zum Beispiel:

%Vor%

(Wenn Sie den Typ zur Kompilierungszeit kennen, machen Sie einfach eine generische Methode und rufen Sie Cast und ToList direkt auf.)

    
Jon Skeet 16.12.2009, 20:53
quelle
3

Probieren Sie die Cast () Linq-Methode:

%Vor%

Und Sie werden den gewünschten Typ in T angeben.

    
Matthew Groves 16.12.2009 20:51
quelle

Tags und Links