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))
            
    {
            }

        }


  • 相关阅读:
    prometheus之五:kube-state-metrics
    prometheus之四:node-exporter
    go语言基础
    EFK+kafka集群实战
    K8S 集群排错指南
    短信倒计时
    微信消息模板
    阿里大鱼
    mui下拉加载
    php无限极分类
  • 原文地址:https://www.cnblogs.com/deerchao/p/1078826.html
Copyright © 2011-2022 走看看