1.校验方法
/// <summary>
/// 对传值对象进行验证
/// </summary>
/// <typeparam name="T1"></typeparam>
/// <param name="model"></param>
/// <returns></returns>
protected dynamic CheckItemsRequired<T1>(T1 model)
{
Type info = typeof(T1);
var pss = info.GetProperties();
var result = new {
flag=true,
msg=""
};
foreach (var p in pss)
{
var pattrs = p.GetCustomAttributes(false);
for (int i = 0; i < pattrs.Length; i++)
{
AttributeInfo t = pattrs[i] as AttributeInfo;
if (t != null)
{
if(t.Type==CheckItemType.Required)
{
string val = sqlAppendHelper.GetModelValue(p.Name, model);
if (string.IsNullOrEmpty(val))
{
return new
{
flag = false,
msg = t.Msg
} ;
}
}
if (t.Type == CheckItemType.Date)
{
string val = sqlAppendHelper.GetModelValue(p.Name, model);
if (!ValidateHelper.IsDate(val))
{
return new
{
flag = false,
msg = t.Msg
};
}
}
}
}
}
return result;
}
2.类的属性注释方法
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AttributeInfo:Attribute
{
private CheckItemType type;
private string msg;
public AttributeInfo(CheckItemType type,string msg)
{
this.type = type;
this.msg = msg;
}
public CheckItemType Type
{
get
{
return type;
}
}
public string Msg
{
get
{
return msg;
}
}
}
public enum CheckItemType
{
Required =1,//必须验证
Date = 2,//验证时间
Doubble = 3//验证重复
}
3.相关注释的类
public class CheckVouch
{
/// <summary>
/// cCVCode
/// </summary>
[AttributeInfo(CheckItemType.Required, "盘点编码不能为空!")]
public string cCVCode { set; get; }
/// <summary>
/// dCVDate
/// </summary>
[AttributeInfo(CheckItemType.Date, "盘点日期不能为空!")]
public string dCVDate { set; get; }
}
感谢https://blog.csdn.net/m0_37879526/article/details/107869486 这篇文章的作者