一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成...
一个存储验证信息的公用类:
/// <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就可以了,哈哈!
本文转自博客园张占岭(仓储大叔)的博客,原文链接:一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成,如需转载请自行联系原博主。
一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成...相关推荐
- linux中添加一个用户到指定用户组的两种方式,修改一个用户到指定用户组的一种方式...
添加一个用户到指定用户组: gpasswd –a 用户名 组名 usermod –G 组名 用户名 //第一种:gpasswd –a 用户名 组名 [root@localhost ~]# id use ...
- 另一个用户已连接到此计算机,如何远程控制另一台电脑 远程控制另一台电脑方法【详解】...
如何远程控制另一台电脑? 如果是2003的系统或XP的系统的话就用windows的远程桌面功能!右击我的电脑,属性,远程,远程桌面里的框里打勾,然后选择选择远程用户管理员的话不用选,管理员已经有权限了 ...
- oracle 新建一个用户和赋予权限
--1.新建个用户 create user qzj_xian_test identified by qzj_xian_test; --因为新建的用户和默认的用户是锁住的,没有权限.所以新建用户后要给用 ...
- 《OEA - 实体扩展属性系统 - 设计方案说明书》
这篇设计文档是 12 月份写来参加公司的研发峰会的,自己倒是信心满满,不过最后还是没有入围.现在想想也没啥大用,所以贴出来,期待与园友交流. 文档有点长,没全部贴在博客中,有兴趣的可以下载附件中的 P ...
- 如何创建一个用户、授权操作k8s集群的过程?
本篇带给大家如何创建一个用户.授权操作k8s集群的过程.希望对你有所帮助! 背景 172.16.99.128是的我k8s集群的master节点,此处是从这里获取集群的证书. 创建访问architech ...
- 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)
文章目录 一 代码实现 0 开发主线 1 实体类 (1)TagInfo (2)TaskInfo (3)TaskTagRule 2 工具类 (1)连接sql的工具类 测试 (2)专门读取properti ...
- linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...
LINUX中用命令成功建立一个用户后信息会记录在哪个文件中 发布时间:2007-07-28 10:14:57来源:红联作者:MPiops 增加用户帐号后 新建用户的命令十分简单,在命令行下使用 use ...
- oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案
原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...
- Linux环境下编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜
题目:编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜,如果用户猜的数大于答案,则提示大了,如果用户猜的数小于答案,则提示小了.当用户猜对时提示:猜对了. #! /bi ...
最新文章
- C语言 函数(做个笔记)
- 世界人工智能大赛方案解析!
- c语言fac函数求n的阶乘,急求C语言编辑题:Cnm=n!/m!(n-m)!其中n,m 由键盘输入。要求设计一个函数fac(n)求某个正整数n 的阶乘。...
- 深入理解 C 指针阅读笔记 -- 第四章
- 基于Pytorch再次解析AlexNet现代卷积神经网络
- Python封装发送信息到钉钉群
- 分布式系统——zabbix 用 onealert实现报警、agent主动模式、proxy代理
- mybatis-plus代码生成器使用和代码
- path.join 与 path.resolve 的区别
- java线程夯住了怎么解决,不明白线程为什么卡住了? 求大神解救
- 3制造数据集_基于MBD的产品设计制造技术研究
- spring中定时器的使用
- Linux Kobject
- js获取文件的后缀名
- 编译器与解释器的区别和工作原理
- 上海自考计算机基础实践,上海自考00019计算机应用基础实践考核考试大纲
- 搭建syslog日志服务器
- HTML5 之 Link 标签
- QScrollArea手指触摸屏滑动
- android只编译release版本
热门文章
- java optional 用法_Java8 中的 Optional 相关用法
- java文件上传_Java文件上传细讲
- 第十六届全国大学生智能车竞赛赛题规划
- P5压电陶瓷致动器,纵向极化,叠堆压电陶瓷,多层压电陶瓷促动器
- html模板编辑器,可视化编辑网站模板
- mysql blob 比较_MySQL下,text 、blob的比较
- elf section类型_ELF文件解析(一):Segment和Section
- java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母
- mysql 主被切换_mysql 主从切换
- Linux启动跟windows启动,Windows,Linux启动机制简介