public static bool TryParse(string data, DataType flag, out SimpleType value) { try { switch (flag) { case DataType.Null: value = new SimpleType(null); break; case DataType.Bool: value = new SimpleType(Boolean.Parse(data)); break; case DataType.Char: value = new SimpleType(Char.Parse(data)); break; case DataType.Byte: value = new SimpleType(Byte.Parse(data)); break; case DataType.SByte: value = new SimpleType(SByte.Parse(data)); break; case DataType.Short: value = new SimpleType(Int16.Parse(data)); break; case DataType.UShort: value = new SimpleType(UInt16.Parse(data)); break; case DataType.Int: value = new SimpleType(Int32.Parse(data)); break; case DataType.UInt: value = new SimpleType(UInt32.Parse(data)); break; case DataType.Long: value = new SimpleType(Int64.Parse(data)); break; case DataType.ULong: value = new SimpleType(UInt64.Parse(data)); break; case DataType.Float: value = new SimpleType(Single.Parse(data)); break; case DataType.Decimal: value = new SimpleType(Decimal.Parse(data)); break; case DataType.Double: value = new SimpleType(Double.Parse(data)); break; case DataType.String: value = new SimpleType(data); break; case DataType.DateTime: value = new SimpleType(DateTime.Parse(data)); break; case DataType.TimeSpan: value = new SimpleType(TimeSpan.Parse(data)); break; default: value = new SimpleType(null); break; } return(true); } catch { value = new SimpleType(null); return(false); } }
public static bool TryParse <T>(this string text, out T value) { var type = typeof(T); if (SimpleType.IsSimpleType(type)) { return(SimpleType.TryParse(text, out value)); } value = default(T); if (!type.IsDefined(_ParsableAttribute, false)) { return(false); } lock (_ParsableTryLock) { try { _ParsableTryParams[1] = type; var tryParse = type.GetMethod("TryParse", _ParsableTryParams); _ParsableTryParams[1] = null; _ParsableTryArgs[0] = text; _ParsableTryArgs[1] = value; var val = false; if (tryParse != null) { val = (bool)tryParse.Invoke(null, _ParsableTryArgs); } value = (T)_ParsableTryArgs[1]; _ParsableTryArgs[0] = null; _ParsableTryArgs[1] = null; if (val) { return(true); } } catch { _ParsableTryArgs[0] = null; _ParsableTryArgs[1] = null; _ParsableTryParams[1] = null; } } lock (_ParsableLock) { try { var parse = type.GetMethod("Parse", _ParsableParams); _ParsableArgs[0] = text; if (parse != null) { value = (T)parse.Invoke(null, _ParsableArgs); } _ParsableArgs[0] = null; return(true); } catch { _ParsableArgs[0] = null; } } value = default(T); return(false); }
public static object ToObject(SimpleType value) { return(value.Value); }
public static string ResolveName(this Type t, params object[] args) { if (SimpleType.IsSimpleType(t)) { return(FormatName(t.Name)); } if (t.IsAbstract || !t.HasInterface <IEntity>()) { return(FormatName(t.Name)); } if (args.IsNullOrEmpty() ? !t.IsConstructable() : !t.IsConstructable(Type.GetTypeArray(args))) { return(FormatName(t.Name)); } string value; if (_StringCache.TryGetValue(t, out value)) { return(value); } value = String.Empty; var o = t.CreateInstanceSafe <IEntity>(args); if (o != null) { try { if (o is Mobile) { value = ((Mobile)o).RawName; } else if (o is Item) { value = ((Item)o).ResolveName(); } else { o.GetPropertyValue("Name", out value); } } catch { } finally { o.Delete(); } } if (String.IsNullOrWhiteSpace(value)) { value = FormatName(t.Name); } if (o == null || args.IsNullOrEmpty()) { _StringCache[t] = value; } return(value); }