2025-03-27 15:05:14 +08:00

141 lines
3.6 KiB
C#

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<T>(this object me)
{
return As<T>(me,default(T));
}
public static T As<T>(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;
}
}
}