一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成

一个存储验证信息的公用类:

   /// <summary>
    /// 验证信息实体类
    /// </summary>
    public class RuleViolation
    {
        /// <summary>
        /// 属性名,only support contruction method set it
        /// </summary>
        public string PropertyName { get; private set; }
        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrorMessage { get; private set; }
        /// <summary>
        /// 为错误信息赋值
        /// </summary>
        /// <param name="errorMessage"></param>
        public RuleViolation(string errorMessage)
        {
            this.ErrorMessage = errorMessage;
        }
        /// <summary>
        /// 为指定属性赋错误信息
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="errorMessage"></param>
        public RuleViolation(string propertyName, string errorMessage)
        {
            this.PropertyName = propertyName;
            this.ErrorMessage = errorMessage;
        }
    }

一个要实现的验证功能的接口

 /// <summary>
    /// 数据实体验证统一接口
    /// </summary>
    public interface IEntity
    {
        /// <summary>
        /// 验证是否成功
        /// </summary>
        bool IsValid { get; }
        /// <summary>
        /// 如果GetRuleViolation返回的迭代数大于0,则IsValid赋值为假
        /// </summary>
        /// <returns></returns>
        IEnumerable<RuleViolation> GetRuleViolation();
    }

当这个接口被实现后,可以使用IsValid方法来判断你的实体是否满足条件!!!听起来有点抽象,现在我把它具体一下吧!

首先来一个实体对象

public partial class User:IEntity
{
  public String UserID { get; set; }

  public String UserName { get; set; }
}

   public partial class UserBase : IEntity
    {
       public bool IsValid
        {
            get { return (GetRuleViolations().Count() == 0); }
        }
        public IEnumerable<RuleViolation> GetRuleViolations()
        {
            if (String.IsNullOrEmpty(this.UserID))
                yield return new RuleViolation("不能为空", "UserID");
            if (!XValidator.IsRealLengthValid(this.UserID, 2, 12))
                yield return new RuleViolation("至少要有2个字符,同时不能多于12个字符", "UserID");
        }

   }

OK了,这样我们在使用User类时,如果要判断是赋值的是否合法,直接使用User.IsValid就可以了,哈哈!

posted @   张占岭  阅读(536)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示