国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Assertor用于判斷參數和拋出異常

2019-11-14 16:38:15
字體:
來源:轉載
供稿:網友

代碼

/// <summary> 斷言器,用于判斷和拋出異常/// </summary>static class Assertor{    /// <summary> 如果value值是null 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreNull(object value, string name)    {        if (value == null)        {            throw new ArgumentNullException(name, "參數不能為null");        }    }    /// <summary> 如果value字符串是null或string.Empty 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreNullOrEmpty(string value, string name)    {        if (value == null || value.Length == 0)        {            throw new ArgumentNullException(name, "字符串不能為null或空");        }    }    /// <summary> 如果value字符串是 null、空還是僅由空白字符組成 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreNullOrWhiteSpace(string value, string name)    {        if (string.IsNullOrWhiteSpace(value))        {            throw new ArgumentNullException(name, "字符串不能為null或連續空白");        }    }    /// <summary> 如果value集合是null或者Count是0 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreNullOrEmpty(ICollection value, string name)    {        if (value == null || value.Count == 0)        {            throw new ArgumentNullException(name, "集合不能為null且必須有元素");        }    }    /// <summary> 如果value值超過min~max 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    /// <param name="min">最小值</param>    /// <param name="max">最大值</param>    public static void AreInRange<T>(T value, string name, T min, T max)        where T : IComparable<T>    {        if (value.CompareTo(min) < 0 || value.CompareTo(max) > 0)        {            throw new ArgumentOutOfRangeException(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>    public static void AreInRange<T>(IComparable value, string name, T min, T max)        where T : IComparable    {        if (value.CompareTo(min) < 0 || value.CompareTo(max) > 0)        {            throw new ArgumentOutOfRangeException(name, value, "值不能大于" + max + "或小于" + min);        }    }    /// <summary> 如果value不是T類型或其子類 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreType<T>(object value, string name)    {        if (value is T == false)        {            throw new ArgumentOutOfRangeException(name, value + " 值不是指定的類型 '" + typeof(T) + "'");        }    }    /// <summary> 如果value不是Type類型或其子類 則拋出異常    /// </summary>    /// <param name="type">限定類型</param>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreType(Type type, object value, string name)    {        if (type.IsInstanceOfType(value) == false)        {            throw new ArgumentOutOfRangeException(name, value + " 值不是指定的類型 '" + type + "'");        }    }    /// <summary> 如果value不是數字類型 則拋出異常    /// </summary>    /// <param name="value">參數值</param>    /// <param name="name">參數名稱</param>    public static void AreNumberType(object value, string name)    {        var conv = value as IConvertible;        if (conv == null)        {            var code = (int)conv.GetTypeCode();            if (code < 5 || code > 15)            {                throw new ArgumentOutOfRangeException(name, value + "不是數字類型");            }        }    }    /// <summary> 如果condition是true 則拋出異常    /// </summary>    /// <param name="condition">判斷條件</param>    /// <param name="message">異常消息</param>    public static void AreTrue<T>(bool condition, string message)        where T : Exception, new()    {        if (condition)        {            var ex = new T();            var lit = Literacy.Cache(typeof(Exception), false);            lit.Load.NonPublicField();            lit.Field["_message"].SetValue(ex, message);            throw ex;        }    }    /// <summary> 如果condition是false 則拋出異常    /// </summary>    /// <param name="condition">判斷條件</param>    /// <param name="message">異常消息</param>    public static void AreFalse<T>(bool condition, string message)        where T : Exception, new()    {        AreTrue<T>(!condition, message);    }    /// <summary> 如果condition是true 則拋出NotSupportedException異常    /// </summary>    /// <param name="condition">判斷條件</param>    /// <param name="message">異常消息</param>    public static void AreTrue(bool condition, string message)    {        AreTrue<NotSupportedException>(condition, message);    }    /// <summary> 如果condition是false 則拋出NotSupportedException異常    /// </summary>    /// <param name="condition">判斷條件</param>    /// <param name="message">異常消息</param>    public static void AreFalse(bool condition, string message)    {        AreTrue<NotSupportedException>(!condition, message);    }}
View Code

調用

PRivate static SimpleCache<IComponentFactory> GetFactoryCache(){    return new SimpleCache<IComponentFactory>(true, key => {        IComponentFactory factory;        var provider = _ProvideCache[key];        if (provider == DBProvider.Other)        {            var type = Type.GetType(key, false, false);            Assertor.AreTrue<NotSupportedException>(type == null, "沒有找到名為" + key + "的類型");            factory = Activator.CreateInstance(type) as IComponentFactory;            Assertor.AreTrue<NotSupportedException>(factory == null, type.FullName + "無法實例化或沒有繼承IComponentFactory");        }        else        {            factory = ComponentFactory.Create(provider);        }        return factory;    });}

CodeCSDN

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

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鲜城| 阿鲁科尔沁旗| 鸡东县| 太仓市| 德江县| 中方县| 永城市| 乌苏市| 雅江县| 特克斯县| 龙口市| 兴山县| 简阳市| 天水市| 无极县| 广平县| 错那县| 大新县| 太康县| 郎溪县| 阳泉市| 陆丰市| 台东市| 磴口县| 韶关市| 丰台区| 临沂市| 周至县| 北川| 平山县| 台南县| 淳安县| 高淳县| 金山区| 区。| 静安区| 保山市| 宣化县| 岱山县| 宿州市| 拜泉县|