微软企业库验证 Validations
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using ValidationResult = System.ComponentModel.DataAnnotations.ValidationResult; namespace Blackice.Suite.Domains.Validations
{
/// <summary>
/// 企业库验证操作
/// </summary>
public class Validation : IValidation
{
/// <summary>
/// 验证
/// </summary>
/// <param name="target">验证目标</param>
public ValidationResultCollection Validate(object target)
{
var validator = ValidationFactory.CreateValidator(target.GetType());
var results = validator.Validate(target);
return GetResult(results);
} /// <summary>
/// 获取验证结果
/// </summary>
private ValidationResultCollection GetResult(IEnumerable<Microsoft.Practices.EnterpriseLibrary.Validation.ValidationResult> results)
{
var result = new ValidationResultCollection();
foreach (var each in results)
result.Add(new ValidationResult(each.Message));
return result;
}
} /// <summary>
/// 验证操作
/// </summary>
public interface IValidation
{
/// <summary>
/// 验证
/// </summary>
/// <param name="target">验证目标</param>
ValidationResultCollection Validate(object target);
}
/// <summary>
/// 验证结果集合
/// </summary>
public class ValidationResultCollection : IEnumerable<ValidationResult>
{
/// <summary>
/// 初始化验证结果集合
/// </summary>
public ValidationResultCollection()
{
_results = new List<ValidationResult>();
}
/// <summary>
/// 验证结果
/// </summary>
private readonly List<ValidationResult> _results; /// <summary>
/// 是否有效
/// </summary>
public bool IsValid
{
get
{
return _results.Count == ;
}
} /// <summary>
/// 验证结果个数
/// </summary>
public int Count
{
get
{
return _results.Count;
}
} /// <summary>
/// 添加验证结果
/// </summary>
/// <param name="result">验证结果</param>
public void Add(ValidationResult result)
{
if (result == null)
return;
_results.Add(result);
} /// <summary>
/// 添加验证结果集合
/// </summary>
/// <param name="results">验证结果集合</param>
public void AddResults(IEnumerable<ValidationResult> results)
{
if (results == null)
return;
foreach (var result in results)
Add(result);
} /// <summary>
/// 获取迭代器
/// </summary>
IEnumerator<ValidationResult> IEnumerable<ValidationResult>.GetEnumerator()
{
return _results.GetEnumerator();
} /// <summary>
/// 获取迭代器
/// </summary>
IEnumerator IEnumerable.GetEnumerator()
{
return _results.GetEnumerator();
} public IEnumerator GetEnumerator()
{
return _results.GetEnumerator();
}
}
}
微软企业库验证 Validations的更多相关文章
- 微软企业库5.0 学习之路——第六步、使用Validation模块进行服务器端数据验证
前端时间花了1个多星期的时间写了使用jQuery.Validate进行客户端验证,但是那仅仅是客户端的验证,在开发项目的过程中,客户端的信息永远是不可信的,所以我们还需要在服务器端进行服务器端的验证已 ...
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——下篇
一.独立验证器 我上篇中我将AndCompositeValidator和OrCompositeValidator归为独立验证器,这2个验证器主要是为了第一类验证服务,可以进行多种验证组合在一起进行复杂 ...
- [EntLib]微软企业库5.0 学习之路——第一步、基本入门
话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...
- 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—下篇
在上一篇文章中, 我介绍了企业库Cryptographer模块的一些重要类,同时介绍了企业库Cryptographer模块为我们提供的扩展接口,今天我就要根据这些 接口来进行扩展开发,实现2个加密解密 ...
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...
- 微软企业库5.0学习-Security.Cryptography模块
一.微软企业库加密应用模块提供了两种加密: 1.Hash providers :离散加密,即数据加密后无法解密 2.Symmetric Cryptography Providers:密钥(对称)加密法 ...
- 使用微软企业库5.0提供的unity配置解藕系统demo(源码)
最近公司集50多号开发人员的人力围绕一个系统做开发,框架是免不了要统一的,公司提供的架构,利于分工合作,便于维护,扩展,升级,其中使用了到微软的企业库来解藕系统,只是因为框架封装,于是在网上学习了一个 ...
- 微软企业库Microsoft Enterprise Library的相关文章链接
微软企业库4.1学习笔记 http://blog.csdn.net/anyqu/article/category/1228691/3 黄聪:Enterprise Library 5.0 系列教程 ww ...
- 微软企业库的Cache
微软企业库的Cache 通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能.基于微软的企业库,我们的快速创建一个缓存的实现. 新建PrismSamp ...
随机推荐
- loading数据加载的6种形式
数据加载的几种形式及对应的交互设计 1.全屏加载 多出现在H5页面,例如微信的文章详情页.全屏加载的特点是数据一次性加载完成,内容加载完成之前界面都会停留在loading界面.进度条和有趣的动画设计, ...
- Lintcode---线段树构造||
线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间.start和end都是整数,并按照如下的方式赋值: 根节点的 start 和 end 由 build ...
- jquery的onclick(this)方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- BASE64 编码解码
/// <summary> /// Base64编码 /// </summary> /// <param name="data"></pa ...
- C# MessageBox 消息对话框
在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消息对话框位于System.Windows.For ...
- PHP学习笔记(7)验证码优化
php代码,主要把RGB改成随机生成,不是之前固定的七种颜色了: <?php // ob_clean(); header("content-type:image/png"); ...
- linux学习笔记29---命令watch
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- Memcached集群:Magent缓存代理使用
小结: 先启动memcached 然后启动magent memcached -d -p 11211 -u memcached -m 64 -c 5120 memcached -d -p 11212 - ...
- CI框架中 日志输出方法log_message()只允许输出字符串解决方案
1.修改CodeIgniter/index.php,添加如下: define('ROOTDIR',dirname(__FILE__).'/'); 2.修改CodeIgniter/application ...
- HTML表单页面的运用
本章目标:掌握表单基本结构<form> 掌握各种表单元素 能理解post和get两种提交方式的区别 本章重点:掌握各种表单元素 本章难点:post和get两种提交方式的区别 一. H ...