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的更多相关文章

  1. 微软企业库5.0 学习之路——第六步、使用Validation模块进行服务器端数据验证

    前端时间花了1个多星期的时间写了使用jQuery.Validate进行客户端验证,但是那仅仅是客户端的验证,在开发项目的过程中,客户端的信息永远是不可信的,所以我们还需要在服务器端进行服务器端的验证已 ...

  2. 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——下篇

    一.独立验证器 我上篇中我将AndCompositeValidator和OrCompositeValidator归为独立验证器,这2个验证器主要是为了第一类验证服务,可以进行多种验证组合在一起进行复杂 ...

  3. [EntLib]微软企业库5.0 学习之路——第一步、基本入门

    话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...

  4. 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—下篇

    在上一篇文章中, 我介绍了企业库Cryptographer模块的一些重要类,同时介绍了企业库Cryptographer模块为我们提供的扩展接口,今天我就要根据这些 接口来进行扩展开发,实现2个加密解密 ...

  5. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  6. 微软企业库5.0学习-Security.Cryptography模块

    一.微软企业库加密应用模块提供了两种加密: 1.Hash providers :离散加密,即数据加密后无法解密 2.Symmetric Cryptography Providers:密钥(对称)加密法 ...

  7. 使用微软企业库5.0提供的unity配置解藕系统demo(源码)

    最近公司集50多号开发人员的人力围绕一个系统做开发,框架是免不了要统一的,公司提供的架构,利于分工合作,便于维护,扩展,升级,其中使用了到微软的企业库来解藕系统,只是因为框架封装,于是在网上学习了一个 ...

  8. 微软企业库Microsoft Enterprise Library的相关文章链接

    微软企业库4.1学习笔记 http://blog.csdn.net/anyqu/article/category/1228691/3 黄聪:Enterprise Library 5.0 系列教程 ww ...

  9. 微软企业库的Cache

    微软企业库的Cache 通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能.基于微软的企业库,我们的快速创建一个缓存的实现. 新建PrismSamp ...

随机推荐

  1. Atitit。 沉思录 与it软件开发管理中的总结 读后感

    Atitit. 沉思录 与it软件开发管理中的总结 读后感 1. <沉思录>,古罗马唯一一位哲学家皇帝马可·奥勒留所著 2 2. 沉思录与it软件开发管理中的总结 2 2.1. 要有自己的 ...

  2. android studio - 导入工程报错[Plugin with id 'com.android.application' not found]

    出错现象: 大概意思是找不到:com.android.application 插件,以上现象对于初学者来说会经常碰到,下面分析下产生的原因. 原因分析 首先来看看导入后的工程结构: 对于此工程结构,是 ...

  3. python-hanoi

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: hanoi.py #Autho ...

  4. 使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题

    今天遇到这么一个情况,在Action代码中进行文件下载: ActionForm得到file_id,通过file_id进行数据库查询得到file_name以及服务器硬盘上的file_uri,其中file ...

  5. poj2431优先队列

        A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather ...

  6. ExtGridReturn ,存放ext的实体类集合和总数

    package cn.edu.hbcf.common.vo; import java.util.List; /** * Ext Grid返回对象 * * @author * */ public cla ...

  7. NumberUtils

    package cn.edu.hbcf.common.utils; import java.math.BigDecimal; import java.text.NumberFormat; import ...

  8. The Definitive Guide To Django 2 学习笔记(三) URLconfs 和松耦合

    前面的例子体现了一个设计模式中的重要思想,松耦合. 不论我们是将/time/改成/current_time/,还是新建一个/another-time-page/同样指向views.py中的 curre ...

  9. 批量上传文件到HDFS的Shell脚本

    在做Hadoop数据挖掘项目的时候,我们第一步是源数据的获取,即把相应的数据放置到HDFS中,以便Hadoop进行计算,手动将文件上传到HDFS中,未免太费时费力,所以我们可以采取像Flume一样的框 ...

  10. Android 编程下字库的使用

    在安卓操作系统下对于 TextView 字体的支持很有限,默认情况下 TextView 的 typeface 属性支持 "Sans","serif"," ...