zoukankan      html  css  js  c++  java
  • A new way to perform parameter validation in C# 3.0

    首先看用法:
        class Program
        
    {
            
    static void Main(string[] args)
            
    {
                
    string param = null;
                
    try
                
    {
                    DoSomething(param);
                }

                
    catch (ContractException ex)
                
    {
                    Console.WriteLine(
    "Exception: {0}", ex.Message);
                }

                Console.ReadKey();
            }


            
    private static void DoSomething(string param)
            
    {
                Contract.Requires(x 
    => param != null);
                Console.WriteLine(
    "after validating parameters..");
            }

        }


    运行结果是:
    Exception: Contract broken: x => (value(CSharpByContract.Program+<>c__DisplayCla
    ss0).param 
    != null)

    加粗的部分显示了参数验证失败的原因.需要注意的是,我们在验证时并不用手写"param!=null"这样的字符串,节省了时间,也减少了不一致.

    代码:
        public static class Contract
        
    {
            
    /// <summary>
            
    /// lazy programer's assert that gives a meaningful contract broken message
            
    /// </summary>
            
    /// <param name="condition">a bool expression to assert to be true</param>

            public static void Requires(Expression<Func<objectbool>> condition)
            
    {
                var x 
    = condition.Compile();
                
    if (!x(null))
                    
    throw new ContractException(condition.ToString());
            }

        }

        public class ContractException : ApplicationException
        
    {
            
    public ContractException(string message)
                : 
    base(string.Format("Contract broken: {0}", message))
            
    {
            }

        }


  • 相关阅读:
    2020.4.13 机器学习相关数学基础
    2020.3.30 机器学习概述
    12.18语法制导的语义翻译
    12.11算符优先分析
    12.4自下而上语法分析
    11.27实验二 递归下降语法分析
    11.20LL(1)文法的判断,递归下降分析程序
    11.13消除左递归
    4.K均值算法--应用
    3.K均值算法
  • 原文地址:https://www.cnblogs.com/deerchao/p/1078826.html
Copyright © 2011-2022 走看看