C#验证对象中的属性是否为空的共通方法

在后台接口处理时,经常需要对请求的参数做验证。因此提取了共通方法,方便进行判断。

   /// <summary>
    /// 数据验证工具类
    /// </summary>
    public static class CheckUtil
    {
        /// <summary>
        /// 验证对象中的字段是否为空
        /// </summary>
        /// <param name="obj">验证的对象</param>
        /// <param name="fields">需要验证的属性</param>
        /// <param name="errorMsg">错误信息</param>
        /// <returns></returns>
        public static bool CheckFieldIsNull(Object obj, string[] fields, out string errorMsg)
        {
            errorMsg = "";
            if (fields != null && fields.Length > 0)
            {
                foreach (var item in fields)
                {
                    if (!string.IsNullOrWhiteSpace(item))
                    {
                        var value = GetPropertyValue(obj, item, out string msg);
                        if (value == null)
                        {
                            errorMsg = msg ?? (item + "不能为空");
                            return false;
                        }
                    }
                }
            }

            return true;
        }

        /// <summary>
        /// 从对象中获取某个属性的值
        /// </summary>
        /// <param name="obj">对象</param>
        /// <param name="field">属性</param>
        /// <returns></returns>
        public static Object GetPropertyValue(Object obj, string field, out string errorMsg)
        {
            errorMsg = null;
            if (obj == null) return null;
            Type t = obj.GetType();
            IEnumerable<System.Reflection.PropertyInfo> property = from pi in t.GetProperties() where pi.Name.ToLower() == field.ToLower() select pi;
            var prop = property.FirstOrDefault();
            if (prop == null) { errorMsg = "(后台修改)请求参数中不包含属性:" + field; return null; }
            return prop.GetValue(obj, null);
        }

  

目前只判断对象中的属性是否为null,需要根据数据类型做进一步判断的,可以自己写验证方法进行进一步判断。

posted @ 2021-10-10 15:28  Nine_Jason  阅读(1725)  评论(0编辑  收藏  举报