Beispiel #1
0
        public SimpleType(object obj)
            : this()
        {
            Value = obj;
            Type  = obj != null?obj.GetType() : null;

            Flag = DataTypes.Lookup(Type);

            //Console.WriteLine("SimpleType: {0} ({1}) [{2}]", Value, Type, Flag);

            if (Flag == DataType.Null)
            {
                Value = null;
            }
        }
Beispiel #2
0
        public static bool TryParse <T>(string data, out T value)
        {
            value = default(T);

            var flag = DataTypes.Lookup(value);

            object val;

            if (flag == DataType.Null)
            {
                var i = 0;

                while (i < DataTypes.NumericFlags.Length)
                {
                    flag = DataTypes.NumericFlags[i++];

                    if (TryConvert(data, flag, out val))
                    {
                        try
                        {
                            value = (T)val;
                            return(true);
                        }
                        catch
                        {
                            return(false);
                        }
                    }
                }

                return(false);
            }

            if (TryConvert(data, flag, out val))
            {
                try
                {
                    value = (T)val;
                    return(true);
                }
                catch
                {
                    return(false);
                }
            }

            return(false);
        }
Beispiel #3
0
        public static bool TryParse <T>(string data, out T value)
        {
            value = default(T);

            try
            {
                object val = null;

                var numStyle = Insensitive.StartsWith(data.Trim(), "0x") ? NumberStyles.HexNumber : NumberStyles.Any;

                if (numStyle == NumberStyles.HexNumber)
                {
                    data = data.Substring(data.IndexOf("0x", StringComparison.OrdinalIgnoreCase) + 2);
                }

                var f = DataTypes.Lookup(value);

                switch (f)
                {
                case DataType.Bool:
                    val = Boolean.Parse(data);
                    break;

                case DataType.Char:
                    val = Char.Parse(data);
                    break;

                case DataType.Byte:
                    val = Byte.Parse(data, numStyle);
                    break;

                case DataType.SByte:
                    val = SByte.Parse(data, numStyle);
                    break;

                case DataType.Short:
                    val = Int16.Parse(data, numStyle);
                    break;

                case DataType.UShort:
                    val = UInt16.Parse(data, numStyle);
                    break;

                case DataType.Int:
                    val = Int32.Parse(data, numStyle);
                    break;

                case DataType.UInt:
                    val = UInt32.Parse(data, numStyle);
                    break;

                case DataType.Long:
                    val = Int64.Parse(data, numStyle);
                    break;

                case DataType.ULong:
                    val = UInt64.Parse(data, numStyle);
                    break;

                case DataType.Float:
                    val = Single.Parse(data, numStyle);
                    break;

                case DataType.Decimal:
                    val = Decimal.Parse(data, numStyle);
                    break;

                case DataType.Double:
                    val = Double.Parse(data, numStyle);
                    break;

                case DataType.String:
                    val = data;
                    break;

                case DataType.DateTime:
                    val = DateTime.Parse(data, CultureInfo.CurrentCulture, DateTimeStyles.AllowWhiteSpaces);
                    break;

                case DataType.TimeSpan:
                    val = TimeSpan.Parse(data);
                    break;
                }

                value = (T)val;
                return(true);
            }
            catch
            { }

            return(false);
        }
Beispiel #4
0
 public static bool IsSimpleType(Type type)
 {
     return(type != null && DataTypes.Lookup(type) != DataType.Null);
 }
Beispiel #5
0
 public static bool IsSimpleType(object value)
 {
     return(value != null && DataTypes.Lookup(value) != DataType.Null);
 }