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

简介:

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

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

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

目录
相关文章
查看一个实体的类型(包括自定义实体)
查看一个实体的类型(包括自定义实体)
|
3月前
|
存储 缓存 开发框架
Winform框架中窗体基类的用户身份信息的缓存和提取
Winform框架中窗体基类的用户身份信息的缓存和提取
|
2月前
|
存储 开发框架 前端开发
EAV模型(实体-属性-值)的设计和低代码的处理方案(3)-- 实体属性定义及前端列表展示和数据录入处理
EAV模型(实体-属性-值)的设计和低代码的处理方案(3)-- 实体属性定义及前端列表展示和数据录入处理
|
机器学习/深度学习 运维 监控
什么是用户实体行为分析(UEBA)
数字新时代正在加速全面到来,网络环境变得更加多元、人员变得更复杂、接入方式多种多样,网络边界逐渐模糊甚至消失,同时伴随着企业数据的激增。数字化转型促进组织的业务发展的同时,也带来了重大的网络安全挑战。安全是人和人攻防对抗的游戏,一切的意图都需要通过行为表达,这是安全运营中最重要也最有价值的一块拼图,同时也是传统方式最欠缺的。针对传统方式的不足,安全行业逐步加强基于大数据驱动,机器学习、概率分析、模式识别等的以“行为”为核心的检测分析。 用户实体行为分析(UEBA)应运而生。
1373 1
|
JavaScript 前端开发 Java
6. 自定义容器类型元素验证,类级别验证(多字段联合验证)
6. 自定义容器类型元素验证,类级别验证(多字段联合验证)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(上)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(上)
265 0
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(上)
|
缓存 Oracle Java
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
177 0
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
|
存储 缓存 算法
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(中)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(中)
268 0
|
XML 数据格式 开发者
定义实体|学习笔记
快速学习定义实体
130 0