public static uint AsUInt(this object val, uint dflt = 0, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } if (val is string) { var sval = ((string)val).Trim(); if (sval.StartsWith(RADIX_BIN, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToUInt32(sval.Substring(2), 2)); } if (sval.StartsWith(RADIX_HEX, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToUInt32(sval.Substring(2), 16)); } } if (val is int) { return((uint)(int)val); } return(Convert.ToUInt32(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static long?AsNullableLong(this object val, long?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } if (val is string) { var sval = ((string)val).Trim(); if (sval.StartsWith(RADIX_BIN, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToInt64(sval.Substring(2), 2)); } if (sval.StartsWith(RADIX_HEX, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToInt64(sval.Substring(2), 16)); } } if (val is ulong) { return((long)(ulong)val); } return(Convert.ToInt64(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static TEnum AsEnum <TEnum>(this object val, TEnum dflt, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) where TEnum : struct { try { if (val == null) { return(dflt); } if (val is string) { var sval = (string)val; return((TEnum)Enum.Parse(typeof(TEnum), sval, true)); } val = Convert.ToInt32(val); return((TEnum)val); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static Uri AsUri(this object val, Uri dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } if (val is Uri) { return((Uri)val); } if (val is string) { var uri = (string)val; if (uri.IsNullOrWhiteSpace()) { return(null); } return(new Uri(uri)); } throw new NFXException("{0}.AsUri".Args(val.GetType().Name)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static bool?AsNullableBool(this object val, bool?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } if (val is TriStateBool) { return(((TriStateBool)val).AsNullableBool()); } return(val.AsBool(false, ConvertErrorHandling.Throw)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static Guid AsGUID(this object val, Guid dflt, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } if (val is string) { var sval = (string)val; return(Guid.Parse(sval)); } else if (val is byte[]) { var arr = (byte[])val; return(arr.GuidFromNetworkByteOrder()); } else { return((Guid)val); } } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static ushort?AsNullableUShort(this object val, ushort?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } if (val is string) { var sval = ((string)val).Trim(); if (sval.StartsWith(RADIX_BIN, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToUInt16(sval.Substring(2), 2)); } if (sval.StartsWith(RADIX_HEX, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToUInt16(sval.Substring(2), 16)); } } return(Convert.ToUInt16(val, INVARIANT)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static byte AsByte(this object val, byte dflt = 0, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } if (val is string) { var sval = ((string)val).Trim(); if (sval.StartsWith(RADIX_BIN, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToByte(sval.Substring(2), 2)); } if (sval.StartsWith(RADIX_HEX, StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToByte(sval.Substring(2), 16)); } } return(Convert.ToByte(val, INVARIANT)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static TimeSpan AsTimeSpan(this object val, TimeSpan dflt, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } if (val is string) { var sval = (string)val; long ival; if (long.TryParse(sval, out ival)) { return(new TimeSpan(ival)); } double dval; if (double.TryParse(sval, out dval)) { return(new TimeSpan((long)dval)); } decimal dcval; if (decimal.TryParse(sval, out dcval)) { return(new TimeSpan((long)dcval)); } TimeSpan tsval; if (TimeSpan.TryParse(sval, out tsval)) { return(tsval); } } var ticks = Convert.ToInt64(val); return(new TimeSpan(ticks)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static DateTime AsDateTime(this object val, DateTime dflt, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return(val.AsDateTime()); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static float AsFloat(this object val, float dflt = 0, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return((float)Convert.ToDouble(val, INVARIANT)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static double?AsNullableDouble(this object val, double?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return(Convert.ToDouble(val, INVARIANT)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static Guid?AsNullableGUID(this object val, Guid?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return(val.AsGUID(dflt ?? Guid.Empty, ConvertErrorHandling.Throw)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static GDIDSymbol AsGDIDSymbol(this object val, GDIDSymbol dflt, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return(val.AsGDIDSymbol()); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static float?AsNullableFloat(this object val, float?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return((float)Convert.ToDouble(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static decimal AsDecimal(this object val, decimal dflt = 0, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return(Convert.ToDecimal(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static sbyte?AsNullableSByte(this object val, sbyte?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return(Convert.ToSByte(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static Atom?AsNullableAtom(this object val, Atom?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return(val.AsAtom()); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static string AsString(this object val, string dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return(Convert.ToString(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static sbyte AsSByte(this object val, sbyte dflt = 0, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } return(Convert.ToSByte(val, INVARIANT)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
/// <summary> /// If styles not specified, defaults to UTC /// </summary> public static DateTime?AsDateTimeField(this MySqlDataReader reader, string fld, DateTime?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault, System.Globalization.DateTimeStyles?styles = null) { var val = reader[fld]; if (val is DBNull) { return(null); } if (!styles.HasValue) { styles = CoreConsts.UTC_TIMESTAMP_STYLES; } return(val.AsNullableDateTime(dflt, handling, styles.Value)); }
public static DateTime?AsNullableDateTime(this object val, DateTime?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None) { try { if (val == null) { return(null); } return(val.AsDateTime(styles)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static char?AsNullableChar(this object val, char?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } if (val is string) { var sval = (string)val; return((sval.Length > 0) ? sval[0] : (char)0); } return(Convert.ToChar(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
/// <summary> /// Converts overpunched string into nullable long /// </summary> public static long?ToLong(this object val, long?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.Throw) { //https://en.wikipedia.org/wiki/Signed_overpunch if (val == null) { return(null); } if (val is long lval) { return(lval); } long result = 0; var str = val.ToString(); for (var i = 0; i < str.Length; i++) { result *= 10; var ch = str[i]; int d; if (i == str.Length - 1) //last char { if (ch == '}') { return(-result); } if (ch == '{') { return(+result); } d = 1 + (ch - 'A'); if (d > 0 && d < 10) { result += d; return(+result); } d = 1 + (ch - 'a'); if (d > 0 && d < 10) { result += d; return(+result); } d = 1 + (ch - 'J'); if (d > 0 && d < 10) { result += d; return(-result); } d = 1 + (ch - 'j'); if (d > 0 && d < 10) { result += d; return(-result); } }//last char else { d = ch - '0'; if (d >= 0 && d < 10) //decimal digit { result += d; continue; } } //exception if (handling == ConvertErrorHandling.ReturnDefault) { return(dflt); } throw new AzosException(StringConsts.OVERPUNCH_TO_NUMBER_ERROR.Args(str.TakeFirstChars(16, ".."))); }//for return(result); }
/// <summary> /// Converts overpunched string into nullable decimal scaled to the specified precision /// </summary> /// <param name="val">Value, coerced to string if needed</param> /// <param name="scale">100, by default int to decimal divider</param> /// <param name="dflt">default value or null</param> /// <param name="handling">Throws or return dflt</param> public static decimal?ToDecimal(this object val, int scale = 100, decimal?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.Throw) { if (scale <= 0) { scale = 1; } var ld = dflt.HasValue ? (long)(dflt * scale) : (long?)null; var l = ToLong(val, ld, handling); if (l.HasValue) { return((decimal)l / scale); } return(null); }
public static bool AsBool(this object val, bool dflt = false, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } if (val is bool) { return((bool)val); } else if (val is string) { var sval = ((string)val).Trim(); if (string.Equals("true", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("yes", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("t", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("y", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("on", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("ok", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("pass", sval, StringComparison.InvariantCultureIgnoreCase) || string.Equals("1", sval, StringComparison.InvariantCultureIgnoreCase) ) { return(true); } long ival; if (long.TryParse(sval, out ival)) { return(ival != 0); } double dval; if (double.TryParse(sval, out dval)) { return(dval != 0); } decimal dcval; if (decimal.TryParse(sval, out dcval)) { return(dcval != 0); } } else if (val is TriStateBool) { return(((TriStateBool)val) == TriStateBool.True); } else if (val is char) { var c = (char)val; if (c == 'T' || c == 't' || c == 'Y' || c == 'y' || c == '1') { return(true); } } else if (val is int) { if ((int)val != 0) { return(true); } } else if (val is double) { if ((double)val != 0) { return(true); } } else if (val is decimal) { if ((decimal)val != 0) { return(true); } } else if (val is TimeSpan) { if (((TimeSpan)val).Ticks != 0) { return(true); } } else if (val is DateTime) { if (((DateTime)val).Ticks != 0) { return(true); } } return(Convert.ToBoolean(val)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static ConfigSectionNode AsLaconicConfig(this object val, ConfigSectionNode dflt = null, string wrapRootName = "azos", ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { string content; try { if (val == null) { return(dflt); } content = val.ToString(); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } try { return(LaconicConfiguration.CreateFromString(content).Root); } catch { if (wrapRootName.IsNotNullOrWhiteSpace()) { try { return(LaconicConfiguration.CreateFromString(wrapRootName + "\n{\n" + content + "\n}").Root); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } } if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static ConfigSectionNode AsXMLConfig(this object val, ConfigSectionNode dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(dflt); } var content = val.ToString(); return(XMLConfiguration.CreateFromXML(content).Root); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static TEnum?AsNullableEnum <TEnum>(this object val, TEnum?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) where TEnum : struct { try { if (val == null) { return(null); } return(val.AsEnum(default(TEnum), ConvertErrorHandling.Throw)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }
public static TimeSpan?AsNullableTimeSpan(this object val, TimeSpan?dflt = null, ConvertErrorHandling handling = ConvertErrorHandling.ReturnDefault) { try { if (val == null) { return(null); } return(val.AsTimeSpan(TimeSpan.FromSeconds(0), ConvertErrorHandling.Throw)); } catch { if (handling != ConvertErrorHandling.ReturnDefault) { throw; } return(dflt); } }