Beispiel #1
0
        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);
        }