zoukankan      html  css  js  c++  java
  • 一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成

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

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

  • 相关阅读:
    怎样获取Web应用程序的路径
    如何取得Repeater控件选择的项目
    方法多种,选择随已定
    如何获取月份的天数
    ajaxToolkit:TextBoxWatermarkExtender演示与应用
    Accessing the GAL(Global Address List) from ASP.NET
    如何获取当前日期的最大时间值
    环境语言变换导致存储过程执行不正常
    流水号 Ver2
    使用JavaScript动态设置样式 Ver2
  • 原文地址:https://www.cnblogs.com/lori/p/2050025.html
Copyright © 2011-2022 走看看