Assertor用于判断参数和抛出异常

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

代码///<summary>断言器,用于判断和抛出异常///</summary>staticclassAssertor

{///<summary>如果value值是null 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreNull(objectvalue,stringname)

{if(value ==null)

{thrownewArgumentNullException(name,"参数不能为null");

}

}///<summary>如果value字符串是null或string.Empty 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreNullOrEmpty(stringvalue,stringname)

{if(value ==null|| value.Length ==0)

{thrownewArgumentNullException(name,"字符串不能为null或空");

}

}///<summary>如果value字符串是 null、空还是仅由空白字符组成 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreNullOrWhiteSpace(stringvalue,stringname)

{if(string.IsNullOrWhiteSpace(value))

{thrownewArgumentNullException(name,"字符串不能为null或连续空白");

}

}///<summary>如果value集合是null或者Count是0 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreNullOrEmpty(ICollection value,stringname)

{if(value ==null|| value.Count ==0)

{thrownewArgumentNullException(name,"集合不能为null且必须有元素");

}

}///<summary>如果value值超过min~max 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>///<param name="min">最小值</param>///<param name="max">最大值</param>publicstaticvoidAreInRange<T>(T value,stringname, T min, T max)whereT : IComparable<T>{if(value.CompareTo(min) <0|| value.CompareTo(max) >0)

{thrownewArgumentOutOfRangeException(name, value,"值不能大于"+ max +"或小于"+min);

}

}///<summary>如果value值超过min~max 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>///<param name="min">最小值</param>///<param name="max">最大值</param>publicstaticvoidAreInRange<T>(IComparable value,stringname, T min, T max)whereT : IComparable

{if(value.CompareTo(min) <0|| value.CompareTo(max) >0)

{thrownewArgumentOutOfRangeException(name, value,"值不能大于"+ max +"或小于"+min);

}

}///<summary>如果value不是T类型或其子类 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreType<T>(objectvalue,stringname)

{if(valueisT ==false)

{thrownewArgumentOutOfRangeException(name, value +"值不是指定的类型 '"+typeof(T) +"'");

}

}///<summary>如果value不是Type类型或其子类 则抛出异常///</summary>///<param name="type">限定类型</param>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreType(Type type,objectvalue,stringname)

{if(type.IsInstanceOfType(value) ==false)

{thrownewArgumentOutOfRangeException(name, value +"值不是指定的类型 '"+ type +"'");

}

}///<summary>如果value不是数字类型 则抛出异常///</summary>///<param name="value">参数值</param>///<param name="name">参数名称</param>publicstaticvoidAreNumberType(objectvalue,stringname)

{varconv = valueasIConvertible;if(conv ==null)

{varcode = (int)conv.GetTypeCode();if(code <5|| code >15)

{thrownewArgumentOutOfRangeException(name, value +"不是数字类型");

}

}

}///<summary>如果condition是true 则抛出异常///</summary>///<param name="condition">判断条件</param>///<param name="message">异常消息</param>publicstaticvoidAreTrue<T>(boolcondition,stringmessage)whereT : Exception,new()

{if(condition)

{varex =newT();varlit = Literacy.Cache(typeof(Exception),false);

lit.Load.NonPublicField();

lit.Field["_message"].SetValue(ex, message);throwex;

}

}///<summary>如果condition是false 则抛出异常///</summary>///<param name="condition">判断条件</param>///<param name="message">异常消息</param>publicstaticvoidAreFalse<T>(boolcondition,stringmessage)whereT : Exception,new()

{

AreTrue<T>(!condition, message);

}///<summary>如果condition是true 则抛出NotSupportedException异常///</summary>///<param name="condition">判断条件</param>///<param name="message">异常消息</param>publicstaticvoidAreTrue(boolcondition,stringmessage)

{

AreTrue<NotSupportedException>(condition, message);

}///<summary>如果condition是false 则抛出NotSupportedException异常///</summary>///<param name="condition">判断条件</param>///<param name="message">异常消息</param>publicstaticvoidAreFalse(boolcondition,stringmessage)

{

AreTrue<NotSupportedException>(!condition, message);

}

}

View Code

调用PRivatestaticSimpleCache<IComponentFactory>GetFactoryCache()

{returnnewSimpleCache<IComponentFactory>(true, key =>{IComponentFactoryfactory;varprovider =_ProvideCache[key];if(provider ==DBProvider.Other)

{vartype =Type.GetType(key,false,false);Assertor.AreTrue<NotSupportedException>(type ==null,"没有找到名为"+ key +"的类型");

factory=Activator.CreateInstance(type)asIComponentFactory;Assertor.AreTrue<NotSupportedException>(factory ==null, type.FullName +"无法实例化或没有继承IComponentFactory");

}else{

factory=ComponentFactory.Create(provider);

}returnfactory;

});

}

CodeCSDNhttps://code.csdn.net/snippets/389206

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航