System.Convert.ChangeType C# (CSharp) Method

ChangeType() public static method

public static ChangeType ( Object value, TypeCode typeCode, IFormatProvider provider ) : Object
value Object
typeCode TypeCode
provider IFormatProvider
return Object
        public static Object ChangeType(Object value, TypeCode typeCode, IFormatProvider provider) {
            if (value == null && (typeCode == TypeCode.Empty || typeCode == TypeCode.String || typeCode == TypeCode.Object)) {
                return null;
            }
        
            IConvertible v = value as IConvertible;
            if (v == null) {
                throw new InvalidCastException(Environment.GetResourceString("InvalidCast_IConvertible"));
            }

            // This line is invalid for things like Enums that return a TypeCode
            // of Int32, but the object can't actually be cast to an Int32.
            //            if (v.GetTypeCode() == typeCode) return value;
            switch (typeCode) {
            case TypeCode.Boolean:
                return v.ToBoolean(provider);
            case TypeCode.Char:
                return v.ToChar(provider);
            case TypeCode.SByte:
                return v.ToSByte(provider);
            case TypeCode.Byte:
                return v.ToByte(provider);
            case TypeCode.Int16:
                return v.ToInt16(provider);
            case TypeCode.UInt16:
                return v.ToUInt16(provider);
            case TypeCode.Int32:
                return v.ToInt32(provider);
            case TypeCode.UInt32:
                return v.ToUInt32(provider);
            case TypeCode.Int64:
                return v.ToInt64(provider);
            case TypeCode.UInt64:
                return v.ToUInt64(provider);
            case TypeCode.Single:
                return v.ToSingle(provider);
            case TypeCode.Double:
                return v.ToDouble(provider);
            case TypeCode.Decimal:
                return v.ToDecimal(provider);
            case TypeCode.DateTime:
                return v.ToDateTime(provider);
            case TypeCode.String:
                return v.ToString(provider);
            case TypeCode.Object:
                return value;
            case TypeCode.DBNull:
                throw new InvalidCastException(Environment.GetResourceString("InvalidCast_DBNull"));
            case TypeCode.Empty:
                throw new InvalidCastException(Environment.GetResourceString("InvalidCast_Empty"));
            default:
                throw new ArgumentException(Environment.GetResourceString("Arg_UnknownTypeCode"));
            }
        }

Same methods

Convert::ChangeType ( Object value, Type conversionType ) : Object
Convert::ChangeType ( Object value, Type conversionType, IFormatProvider provider ) : Object
Convert::ChangeType ( Object value, TypeCode typeCode ) : 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