设为首页 加入收藏

TOP

参数验证一种方式(一)
2019-09-17 19:08:20 】 浏览:112
Tags:参数 验证 方式
  1. 在调用方法的时候我们需要对输入参数进行验证,譬如非空,只能数字类型等;

  2. 一些参数验证都是非常通用的,所以可以累积后续不断完善;

  3. 这种写法源于之前很早看到一篇博客后续完善,具体地址忘记了,所以现在Github项目采用协议:MIT,非常抱歉;

  4. GitHub地址:MasterChief 参数验证代码

  5. 欢迎Star,欢迎Issues;

1. 代码实现

using System;
using System.IO;
using System.Text.RegularExpressions;
using MasterChief.DotNet4.Utilities.Common;
using MasterChief.DotNet4.Utilities.Model;
 
namespace MasterChief.DotNet4.Utilities.Operator
{
    /// <summary>
    ///     参数验证帮助类
    /// </summary>
    public static class ValidateOperator
    {
        #region Methods
 
        /// <summary>
        ///     验证初始化
        /// </summary>
        /// <returns>Validation</returns>
        public static Validation Begin()
        {
            return null;
        }
 
        /// <summary>
        ///     需要验证的正则表达式
        /// </summary>
        /// <param name="validation">Validation</param>
        /// <param name="checkFactory">委托</param>
        /// <param name="pattern">正则表达式</param>
        /// <param name="argumentName">参数名称</param>
        /// <returns>Validation</returns>
        public static Validation Check(this Validation validation, Func<bool> checkFactory, string pattern,
            string argumentName)
        {
            return Check<ArgumentException>(validation, checkFactory,
                string.Format(ValidateResource.ParameterCheck_Match2, argumentName));
        }
 
        /// <summary>
        ///     自定义参数检查
        /// </summary>
        /// <typeparam name="TException">泛型</typeparam>
        /// <param name="validation">Validation</param>
        /// <param name="checkedFactory">委托</param>
        /// <param name="message">自定义错误消息</param>
        /// <returns>Validation</returns>
        /// 时间:2016/7/19 11:37
        /// 备注:
        public static Validation Check<TException>(this Validation validation, Func<bool> checkedFactory,
            string message)
            where TException : Exception
        {
            if (checkedFactory())
                return validation ?? new Validation
                {
                    IsValid = true
                };
 
            var exception = (TException) Activator.CreateInstance(typeof(TException), message);
            throw exception;
        }
 
        /// <summary>
        ///     检查指定路径的文件夹必须存在,否则抛出<see cref="DirectoryNotFoundException" />异常。
        /// </summary>
        /// <param name="validation">Validation</param>
        /// <param name="data">判断数据</param>
        /// <exception cref="ArgumentNullException">ArgumentNullException</exception>
        /// <exception cref="DirectoryNotFoundException">DirectoryNotFoundException</exception>
        /// <returns>Validation</returns>
        public static Validation CheckDirectoryExist(this Validation validation, string data)
        {
            return Check<DirectoryNotFoundException>(validation, () => Directory.Exists(data),
                string.Format(ValidateResource.ParameterCheck_DirectoryNotExists, data));
        }
 
        /// <summary>
        ///     检查文件类型
        /// </summary>
        /// <param name="validation">Validation</param>
        /// <param name="actualFileExt">实际文件类型;eg: .xls</param>
        /// <param name="expectFileExt">期待文件类型</param>
        /// <returns></returns>
        public static Validation CheckedFileExt(thi
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C# 得到EXCEL表格中的有效行数和.. 下一篇微信公众号开发C#系列-6、消息管..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目