zoukankan      html  css  js  c++  java
  • 微软企业库验证 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 == 0;
                }
            }
    
            /// <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();
            }
        }
    }
  • 相关阅读:
    Quartz.Net在windows服务中的使用
    mysql之group by,order by
    mysql之select,insert,delete,update
    win8.1安装VMware Error:This product may not be installed on a comuputer that has Microsoft HyperV installed
    mysql之创建数据库,创建数据表
    深入浅出空间索引:2
    地图点聚合优化方案
    地理围栏算法解析
    GeoHash核心原理解析
    Mongodb地理空间索引
  • 原文地址:https://www.cnblogs.com/blackice/p/5419336.html
Copyright © 2011-2022 走看看