/// 錯誤碼枚舉 /// public enum CodeEnum : int { 解析報文出錯 = 10000, 數據包為空 = 10001, 參數無效 = 1000">

多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 枚舉特性標記和基本處理類及應用

枚舉特性標記和基本處理類及應用

來源:程序員人生   發布時間:2014-10-02 08:00:00 閱讀次數:2068次

定義錯誤類別:

/// <summary> /// 錯誤碼枚舉 /// </summary> public enum CodeEnum : int { 解析報文出錯 = 10000, 數據包為空 = 10001, 參數無效 = 10002, 執行失敗 = 10003, 調用接口校驗不成功 = 10004, 應用內部錯誤 = 10005 }
自定義錯誤類:

using Newtonsoft.Json; using System; namespace Business { [JsonObject] public class ExceptionBiz : Exception { public ExceptionBiz(CodeEnum code, string msg) { Code = code; Msg = msg; LogManage.Add(StackTrace+ msg);//記錄日志 } /// <summary> /// 業務信息編碼 /// </summary> public CodeEnum Code { get; set; } /// <summary> /// 業務信息消息 /// </summary> public string Msg { get; set; } } }
public static void Add(string content) { string logPath = GetApp("LogPath"); if (logPath == "") logPath = @"G:log"; //string dirPath = Directory.GetCurrentDirectory() + logPath; if (!Directory.Exists(logPath)) { Directory.CreateDirectory(logPath); } string fileName = DateTime.Now.ToString("yyyyMMdd")+".txt"; using (FileStream fs = new System.IO.FileStream(logPath + fileName, System.IO.FileMode.Append)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+":"+ content); } } }
核心代碼:

using System; using System.Collections.Generic; using System.Reflection; namespace Business { public class EnumHelper { /// <summary> /// 用于緩存枚舉值的屬性值 /// </summary> private static readonly Dictionary<object, EnumAttribute> enumAttr = new Dictionary<object, EnumAttribute>(); /// <summary> /// 獲取枚舉值的名稱,該名稱由EnumAttribute定義 /// </summary> /// <param name="value">枚舉值</param> /// <returns>枚舉值對應的名稱</returns> public static string GetName(Enum value) { EnumAttribute ea = GetAttribute(value); return ea != null ? ea.Name : ""; } /// <summary> /// 獲取枚舉值的名稱,該名稱由EnumAttribute定義 /// </summary> /// <param name="value">枚舉值</param> /// <returns>枚舉值對應的名稱</returns> public static string GetDescription(Enum value) { EnumAttribute ea = GetAttribute(value); return ea != null ? ea.Description : ""; } /// <summary> /// 從字符串轉換為枚舉類型 /// </summary> /// <typeparam name="T">枚舉類型</typeparam> /// <param name="str">要轉為枚舉的字符串</param> /// <returns>轉換結果</returns> public static T GetEnum<T>(string str) { if (string.IsNullOrWhiteSpace(str)) throw new ExceptionBiz(CodeEnum.解析報文出錯, "排序對象解析出錯!"); try { T pe = (T)Enum.Parse(typeof(T), str); return pe; } catch { Type type = typeof(T); string templete = "枚舉類型{0}中沒有定義{1}項!"; string msg = string.Format(templete, type.ToString(), str); throw new ExceptionBiz(CodeEnum.解析報文出錯, msg); } } /// <summary> /// 獲取枚舉值定義的屬性 /// </summary> /// <param name="value">枚舉對象</param> /// <returns>獲取枚舉對象的描述屬性值</returns> private static EnumAttribute GetAttribute(Enum value) { if (enumAttr.ContainsKey(value)) { EnumAttribute ea = enumAttr[value]; return ea; } else { FieldInfo field = value.GetType().GetField(value.ToString()); if (field == null) return null; EnumAttribute ea = null; object[] attributes = field.GetCustomAttributes(typeof(EnumAttribute), true); if (attributes != null && attributes.Length > 0) { ea = (EnumAttribute)attributes[0]; } enumAttr[value] = ea; return ea; } } } /// <summary> ///描述枚舉的屬性 /// </summary> [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] public class EnumAttribute : Attribute { private string _name; private string _description; /// <summary> /// 枚舉名稱 /// </summary> public string Name { get { return _name; } set { _name = value; } } /// <summary> /// 枚舉描述 /// </summary> public string Description { get { return _description; } set { _description = value; } } /// <summary> /// 構造函數 /// </summary> /// <param name="name">枚舉名稱</param> public EnumAttribute(string name) { this.Name = name; } /// <summary> /// 構造函數 /// </summary> /// <param name="name">枚舉名稱</param> /// <param name="description">枚舉描述</param> public EnumAttribute(string name, string description) { this.Name = name; this.Description = description; } } }
應用:
ProductEnum pe = EnumHelper.GetEnum<ProductEnum>(v.Name); //名稱獲取枚舉對象 string name = EnumHelper.GetName(pe); //獲取枚舉對象的描述 if (string.IsNullOrWhiteSpace(name)) throw new ExceptionBiz(CodeEnum.解析報文出錯, "排序對象映射出錯!");

/// <summary> /// 商品排序枚舉 /// </summary> public enum ProductEnum { [EnumAttribute("sales")]銷量, [EnumAttribute("mprice3")]價格, [EnumAttribute("comments")]評論, [EnumAttribute("id")]最新 }


配合之前一篇排序處理:http://blog.csdn.net/joyhen/article/details/39204473
可以很方便的處理多維度排序

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 一级aa免费视频毛片 | 欧美一页 | 亚洲小视频在线播放 | 亚洲福利视频一区 | 看片久久| 国产番号 | 国产九九视频在线观看 | 欧美jizzhd极品欧美 | 伊人网99 | 国产精品公开免费视频 | vr欧美乱强伦xxxxx | 一级做a爱片久久蜜桃 | 伊人久久99| 日韩永久在线观看免费视频 | 久久久久久国产精品免费 | 亚洲丰满熟妇毛片在线播放 | 最近最新高清免费中文字幕 | 久久亚洲精选 | 亚洲最大的黄色网 | 一级毛片一级毛片一级毛片aa | 国产一区二区在线不卡 | 国产欧美一区二区久久 | 亚洲第一网站免费视频 | freesex呦交孩| 亚洲黄色在线观看 | 天堂综合 | 午夜久久精品 | 母狗求操| 国产成人免费不卡在线观看 | 成人欧美一区二区三区在线观看 | 欧美精品一区二区三区久久 | 欧美一级毛片无遮挡 | 网全大全黄| 午夜视频网站在线观看 | 婷婷亚洲国产成人精品性色 | 国产精品亚洲综合一区在线观看 | 日本一级淫片免费放 | 色吊丝一区二区 | 最近中文字幕完整国语视频 | 亚洲精品福利在线观看 | 亚洲精选|