Exemple #1
0
 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);
     }
 }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
 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);
     }
 }
Exemple #8
0
 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);
            }
        }
Exemple #10
0
 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);
     }
 }
Exemple #11
0
 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);
     }
 }
Exemple #12
0
 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);
     }
 }
Exemple #20
0
 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);
     }
 }
Exemple #21
0
        /// <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);
     }
 }
Exemple #24
0
        /// <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);
        }
Exemple #25
0
        /// <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);
     }
 }