System.Convert.ChangeType C# (CSharp) Method

ChangeType() public static method

public static ChangeType ( Object value, Type conversionType, IFormatProvider provider ) : Object
value Object
conversionType Type
provider IFormatProvider
return Object
        public static Object ChangeType(Object value, Type conversionType, IFormatProvider provider) {
            if( conversionType == null) {
                throw new ArgumentNullException("conversionType");
            }

            if( value == null ) {
                if(conversionType.IsValueType) {
                    throw new InvalidCastException(Environment.GetResourceString("InvalidCast_CannotCastNullToValueType"));
                }
                return null; 
            }

            IConvertible ic = value as IConvertible;
            if (ic == null) {
                if ( value.GetType() == conversionType) {
                    return value;
                }
                throw new InvalidCastException(Environment.GetResourceString("InvalidCast_IConvertible"));
            }
            if (conversionType==ConvertTypes[(int)TypeCode.Boolean])
                return ic.ToBoolean(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Char])
                return ic.ToChar(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.SByte])
                return ic.ToSByte(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Byte])
                return ic.ToByte(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Int16]) 
                return ic.ToInt16(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.UInt16])
                return ic.ToUInt16(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Int32])
                return ic.ToInt32(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.UInt32])
                return ic.ToUInt32(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Int64])
                return ic.ToInt64(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.UInt64])
                return ic.ToUInt64(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Single])
                return ic.ToSingle(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Double])
                return ic.ToDouble(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.Decimal])
                return ic.ToDecimal(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.DateTime])
                return ic.ToDateTime(provider);
            if (conversionType==ConvertTypes[(int)TypeCode.String]) {
                return ic.ToString(provider);
            }
            if (conversionType==ConvertTypes[(int)TypeCode.Object])
                return (Object)value;
            return ic.ToType(conversionType, provider);
        }

Same methods

Convert::ChangeType ( Object value, Type conversionType ) : Object
Convert::ChangeType ( Object value, TypeCode typeCode ) : Object
Convert::ChangeType ( Object value, TypeCode typeCode, IFormatProvider provider ) : Object

Usage Example

Beispiel #1
0
        public static T To <T>(this object obj, T defaultValue = default(T))
        {
            try
            {
                if (obj.IsNull())
                {
                    return(defaultValue);
                }

                if (obj is T)
                {
                    return((T)obj);
                }

                if (typeof(T) == typeof(Guid))
                {
                    return(obj.ToGuid <T>());
                }

                if (typeof(T) == typeof(bool))
                {
                    return(obj.ToBoolean <T>());
                }

                return((T)SystemConvert.ChangeType(obj, typeof(T)));
            }
            catch (Exception)
            {
                return(defaultValue);
            }
        }
All Usage Examples Of System.Convert::ChangeType