微软企业库验证 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 ...
随机推荐
- Rabbitmq消息队列(三) 工作队列
1.简介 默认来说,RabbitMQ会按顺序得把消息发送给每个消费者(consumer).平均每个消费者都会收到同等数量得消息.这种发送消息得方式叫做——轮询(round-robin). 工作队列(又 ...
- Mac上的学习神器:Marginnote
https://marginnote.com/?lang=zh-hans 技巧1:合并 多选编辑 - 按顺序选择多个块 - 左下角菜单 - 合并 技巧2:管理顺序 双击图片并且按住不放,即可拖拽顺序 ...
- Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露
2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...
- IE的layout布局
我们那知道浏览器有bug,而且Windows上的lE的bug 似乎比太多数浏览器都多.IE/Win的表现与其他浏览器不同的原因之一是,显示引擎使用一个称为布局(layout)的内部概念.因为布均是一个 ...
- calico性能测试
硬件环境: 三台虚拟机: 192.168.99.129 master(kube-apiserver.kube-controller-manager.kube-proxy.kube-scheduler. ...
- python3颜色输出
遇到一个项目,需求是在python3中,处理结果显示高亮加颜色,然后资料整理如下 ### 格式: \033[显示方式;前景色;背景色m 这里的格式是规定了m后面的输出字符颜色样式 说明: 前景色 背景 ...
- python post get请求
安装 Requests pip install requests import requests requests.get('https://github.com/timeline.json') 使用 ...
- 编写Nginx启停服务脚本
在/etc/init.d/目录下创建脚本 vim /etc/init.d/nginx 编写脚本内容:(其中下面2行需要根据情况自行修改) nginxd=/opt/nginx/sbin/nginx ng ...
- CTO俱乐部
主持人:目前互联网金融行业存在哪些行业痛点?云信CreditCloud 是如何解决这些痛点的,过程中有哪些思考? 朱家波:目前这个行业有点乱象丛生, 投资人对行业的不信任是一个很大的痛点.解决不信任的 ...
- Openstack(Kilo)安装系列之Keystone(四)
创建租间.用户.角色 一.To configure prerequisites 1.Configure the authentication token: export OS_TOKEN=ADMIN_ ...