且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-01 10:40:56

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

   /// <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就可以了,哈哈!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成,如需转载请自行联系原博主。