Poniższa funkcja akceptuje obiekt, który czasami może być tablicą danego typu. W tym przypadku, przypuszczam, że typ można określić za pomocą obj [0] .GetType(), zakładając, że tablica ma co najmniej jeden element. Chciałbym przekonwertować taką tablicę na typowy List odpowiedniego typu, ale poniższy kod tylko konwertuje na obiekt <. Jak to zrobić?Konwertuj tablicę dowolnego typu na listę <T> (C#)
public object GetDeserializedObject(object obj, Type targetType) { if (obj is Array) { List<object> obj2 = new List<object>(); for (int i = 0; i < ((Array)obj).Length; i++) { obj2.Add(((object[])obj)[i]); } obj = obj2; } return obj; }
Zauważ, że GetSerializedObject() realizuje funkcję należącej do interfejsu IDataContractSurrogate, więc nie sądzę, mogę zmienić swój podpis, jak pokazano.
Co należy w miejscu "..."? –
@nw: Klasa, w której umieścisz metodę 'ConvertArray' zdefiniowaną przez Jona. To znaczy, jeśli umieścisz metodę' ConvertArray' w klasie o nazwie 'ArrayConverter', a następnie zastąp' '...' 'ArrayConverter'. – jason
@ Jon: "TargetType" powinno być "Type". – jason