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


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

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

  • 相关阅读:
    Flex 布局教程:语法篇
    一些不错的滚动条
    SharePoint缓存导致访问慢解决
    针对SharePointFarm场时安装部署OWA的步骤
    【转】必需知道的 SharePoint 权限 Tips
    【转】SharePoint工作流中常用的方法
    通过SPList Definition自定义ListItem打开编辑详细页面
    Jquery 实现Xml文件内容处理
    【转】为 XmlNode.SelectNodes 加上排序功能
    [MSDN]关键字查询语言 (KQL) 语法参考
  • 原文地址:https://www.cnblogs.com/lori/p/2050025.html
Copyright © 2020-2023  润新知