public override object Convert(object source, Type sourceType, Type targetType) { if (source == null) { return(null); } var targetElementType = ConversionUtils.GetElementType(targetType); if (targetElementType == null) { throw new InvalidOperationException("No target element type"); } var enumerable = source as IEnumerable; var len = ConversionUtils.Count(enumerable); var array = Array.CreateInstance(targetElementType, len); var i = 0; foreach (var sourceElement in enumerable) { var targetElement = _conversionService.Convert(sourceElement, sourceElement.GetType(), targetElementType); array.SetValue(targetElement, i++); } return(array); }