1. 程式人生 > 其它 >C#驗證物件中的屬性是否為空的共通方法

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,需要根據資料型別做進一步判斷的,可以自己寫驗證方法進行進一步判斷。