Aşağıdaki işlev, bazen belirli bir türden bir dizi olabilen bir nesneyi kabul eder. Bu durumda, türün en az bir üye olduğu varsayılarak, objenin [0] .GetType() ile belirlenebileceğini varsayalım. Bu tür bir diziyi uygun türde genel bir Liste <T> dönüştürmek istiyorum, ancak aşağıdaki kod yalnızca <nesnesinin> nesnesine dönüştürmede başarılı olur. Bu nasıl yapılabilir? GetSerializedObject() IDataContractSurrogate arayüzüne ait bir işlev uygular, bu yüzden gösterildiği gibi onun imzasını değiştirebilir sanmıyorumHerhangi bir türde diziyi Listeye dönüştür dönüştürme <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; }
Not.
"..." yerine ne aittir? –
@nw: Jon'un tanımladığı "ConvertArray" yöntemini yerleştirdiğiniz sınıf. Yani, 'ArrayConverter' adlı bir dizide 'ConvertArray 'yöntemini kullanırsanız,' ArrayConverter' ile '...' değiştirin. – jason
@Jon: 'TargetType'' Type' olmalıdır. – jason