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