public static ArrayConversionResult <T, U> Convert <T, U>(T[] array, ICustomConverter <T, U> converter) { if ((array == null) || (array.Length == 0)) { return(ArrayConversionResult <T, U> .Empty()); } if (converter == null) { converter = new CustomConverter <T, U>(); } if (!converter.CanConvertBetweenTypes()) { return(ArrayConversionResult <T, U> .Empty()); } var convertedValues = new List <U>(); var failConvertValues = new List <T>(); for (int i = 0; i < array.Length; i++) { T item = array[i]; U convertedItem; if (converter.TryConvertValue(item, out convertedItem)) { convertedValues.Add(convertedItem); } else { failConvertValues.Add(item); } } var nonConvertibleValues = failConvertValues.ToArray(); var effectivelyConvertedValues = convertedValues.ToArray(); return(new ArrayConversionResult <T, U>(effectivelyConvertedValues, nonConvertibleValues)); }
public static U[] Convert <T, U>(T[] array, ICustomConverter <T, U> converter, out T[] nonConvertibleValues) { nonConvertibleValues = new T[0]; if ((array == null) || (array.Length == 0)) { return(new U[0]); } if (converter == null) { converter = new CustomConverter <T, U>(); } if (!converter.CanConvertBetweenTypes()) { return(new U[0]); } var convertedValues = new List <U>(); var failConvertValues = new List <T>(); for (int i = 0; i < array.Length; i++) { T item = array[i]; U convertedItem; if (converter.TryConvertValue(item, out convertedItem)) { convertedValues.Add(convertedItem); } else { failConvertValues.Add(item); } } nonConvertibleValues = failConvertValues.ToArray(); return(convertedValues.ToArray()); }