在后台接口處理時,經常需要對請求的參數做驗證。因此提取了共通方法,方便進行判斷。
/// <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,需要根據數據類型做進一步判斷的,可以自己寫驗證方法進行進一步判斷。
