using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HZQR.Common { public static class TypeParseExtenions { public static bool IsEmpty(this object[] me) { if (me == null) return true; if (me.Length == 0) return true; return false; } public static bool IsNullOrDBNull(this object me) { return !(me != null && me != DBNull.Value); } public static T As(this object me) { return As(me,default(T)); } public static T As(this object me, T defaultValue) { T v; try { v = (T)Convert.ChangeType(me, typeof(T)); } catch { v = defaultValue; } return v; } public static DateTime? TryParseToDateTime(this object me) { if (me.IsNullOrDBNull()) return null; else if (me is DateTime) return (DateTime)me; else { DateTime v; if (DateTime.TryParse(me.ToString(), out v)) return v; else return null; } } public static string TryParseToString(this object me) { return me == null ? string.Empty : Convert.ToString(me); } public static bool TryParseToBool(this object me, bool defaultValue = false) { if (me.IsNullOrDBNull()) return defaultValue; if (me is int) { return (int)me > 0 ? true : false; } else { bool v; bool.TryParse(me.ToString(), out v); return v; } } public static short TryParseToShort(this object me, short defaultValue = 0) { short v = 0; decimal dv = 0; if (!(me.IsNullOrDBNull())) { decimal.TryParse(me.ToString(), out dv); short.TryParse(dv.ToString("0"), out v); } return (v == 0) ? defaultValue : v; } public static int TryParseToInt(this object me, int defaultValue = 0) { int v = 0; decimal dv = 0; if (!(me.IsNullOrDBNull())) { decimal.TryParse(me.ToString(), out dv); int.TryParse(dv.ToString("0"), out v); } return (v == 0) ? defaultValue : v; } public static long TryParseToLong(this object me, long defaultValue = 0) { long v = 0; decimal dv = 0; if (!me.IsNullOrDBNull()) { decimal.TryParse(me.ToString(), out dv); long.TryParse(dv.ToString("0"), out v); } return (v == 0) ? defaultValue : v; } public static decimal TryParseToDecimal(this object me, decimal defaultValue = 0) { decimal v = 0; if (!me.IsNullOrDBNull()) { decimal.TryParse(me.ToString(), out v); } if (v == 0) v = defaultValue; return v; } public static double TryParseToDouble(this object me, double defaultValue = 0) { double v = 0; if (!me.IsNullOrDBNull()) { double.TryParse(me.ToString(), out v); } if (v == 0) v = defaultValue; return v; } } }