public override object Convert(Type desiredType, Type inputType, object input, out bool conversionSucceeded) { conversionSucceeded = (input != null && input.ToString() == ""); if (input == null) { return(null); } Type elemType = desiredType.GetGenericArguments()[0]; input = ConverterUtil.FixInputForMonoIfNeeded(elemType, input); Type listType = typeof(List <>).MakeGenericType(elemType); var result = (IList)Activator.CreateInstance(listType); var values = input as Array; bool elementConversionSucceeded; for (int i = 0; i < values.Length; i++) { object val = parent.Convert(elemType, inputType, values.GetValue(i), out elementConversionSucceeded); if (val != null) { result.Add(val); } // if at least one list element get converted // we consider the conversion a success if (elementConversionSucceeded) { conversionSucceeded = true; } } return(result); }
public override object Convert(Type desiredType, Type inputType, object input, out bool conversionSucceeded) { conversionSucceeded = (input != null && input.ToString() == ""); if (input == null) { return(null); } Type elemType = desiredType.GetElementType(); input = ConverterUtil.FixInputForMonoIfNeeded(elemType, input); var values = input as Array; Array result = Array.CreateInstance(elemType, values.Length); for (int i = 0; i < values.Length; i++) { bool elementConversionSucceeded; result.SetValue(parent.Convert(elemType, null, values.GetValue(i), out elementConversionSucceeded), i); // if at least one array element get converted // we consider the conversion a success if (elementConversionSucceeded) { conversionSucceeded = true; } } return(result); }