using PlcSiemens.Core.Common;

namespace PlcSiemens.Core.Extension
{
    public static class ObjectExtension
    {
        #region 类型转换

        public static DefaultConvert Convert = new DefaultConvert();

        /// <summary>转为整数，转换失败时返回默认值。支持字符串、全角、字节数组（小端）</summary>
        public static int ToInt(this object value, int defaultValue = 0)
        {
            return Convert.ToInt(value, defaultValue);
        }

        /// <summary>转为浮点数，转换失败时返回默认值。支持字符串、全角、字节数组（小端）</summary>
        public static double ToDouble(this object value, double defaultValue = 0)
        {
            return Convert.ToDouble(value, defaultValue);
        }

        /// <summary>转为布尔型，转换失败时返回默认值。支持大小写True/False、0和非零</summary>
        public static bool ToBoolean(this object value, bool defaultValue = false)
        {
            return Convert.ToBoolean(value, defaultValue);
        }

        /// <summary>转为时间日期，转换失败时返回最小时间</summary>
        public static DateTime ToDateTime(this object value)
        {
            return Convert.ToDateTime(value, DateTime.MinValue);
        }

        /// <summary>转为时间日期，转换失败时返回默认值</summary>
        public static DateTime ToDateTime(this object value, DateTime defaultValue)
        {
            return Convert.ToDateTime(value, defaultValue);
        }

        #endregion 类型转换
    }
}
