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; } }
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); }
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); }
public static bool IsSimpleType(Type type) { return(type != null && DataTypes.Lookup(type) != DataType.Null); }
public static bool IsSimpleType(object value) { return(value != null && DataTypes.Lookup(value) != DataType.Null); }