System.Drawing.SizeFConverter.ConvertTo C# (CSharp) Method

ConvertTo() private method

private ConvertTo ( ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType ) : object
context ITypeDescriptorContext
culture System.Globalization.CultureInfo
value object
destinationType Type
return object
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
            {
                throw new ArgumentNullException(nameof(destinationType));
            }

            if (destinationType == typeof(string) && value is SizeF)
            {
                SizeF size = (SizeF)value;

                if (culture == null)
                {
                    culture = CultureInfo.CurrentCulture;
                }
                string sep = culture.TextInfo.ListSeparator + " ";
                TypeConverter floatConverter = TypeDescriptor.GetConverter(typeof(float));
                string[] args = new string[2];
                int nArg = 0;

                args[nArg++] = floatConverter.ConvertToString(context, culture, size.Width);
                args[nArg++] = floatConverter.ConvertToString(context, culture, size.Height);

                return string.Join(sep, args);
            }
            
            if (destinationType == typeof(InstanceDescriptor) && value is SizeF)
            {
                SizeF size = (SizeF)value;

                ConstructorInfo ctor = typeof(SizeF).GetConstructor(new Type[] { typeof(float), typeof(float) });
                if (ctor != null)
                {
                    return new InstanceDescriptor(ctor, new object[] { size.Width, size.Height });
                }
            }

            return base.ConvertTo(context, culture, value, destinationType);
        }