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

日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

定義錯誤類別:

/// <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
可以很方便的處理多維度排序

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩电影免费观 | 国产精品一区二区在线 | 狠狠爱成人 | 亚洲欧美视频在线观看 | 欧美亚洲大片 | 久久久噜噜噜久久中文字幕色伊伊 | 免费a爱片猛猛 | 热99在线观看| 激情综合在线观看 | 欧洲精品码一区二区三区免费看 | 明日有晴天 | 精品久久久久久国产 | 黄色av免费在线 | 一区二区三区四区免费视频 | 日本免费三片免费观看 | 国产精品永久免费 | 亚洲一区二区免费视频 | 欧美亚洲高清 | 久久久精品网站 | 国产午夜亚洲精品理论片色戒 | 国产日韩av在线播放 | 欧美日韩亚洲成人 | 成人性调教在线播放 | 伊人免费视频 | 国产免费小视频 | 成人久久久精品国产乱码一区二区 | 精品一区二区三区蜜桃 | 日本天堂在线观看 | 中文字字幕在线中文 | 91福利视频合集 | 欧美在线免费视频 | a视频免费 | 欧美激情一区 | 在线观看一区二区视频 | 欧美一区二区片 | 国产精品二区在线 | 亚洲一区二区三区在线看 | 国产精品一区视频 | 国产成人精品午夜 | 97视频免费播放 | 中文字幕在线一区 |