近期朋友给我发来他们的工程代码,被我发现居然有中文枚举。。。。。
没事闲的 帮他改写一下并且重新整理一下代码
不多说上demo 代码:
class Program { static void Main(string[] args) { Program program = new Program(); program.Start(); Console.ReadLine(); } void Start() { //Write String Value by default method ToString() Console.WriteLine(Days.Sunday); //write Attribute Value Console.WriteLine(Days.Sunday.StringValue()); //write Int Value Console.WriteLine((int)Days.Sunday); } } [Flags] public enum Days { [EnumValue("Sun")] Sunday = 0x1, [EnumValue("Mon")] Monday = 0x2, [EnumValue("Tue")] Tuesday = 0x4, [EnumValue("Wed")] Wednesday = 0x8, [EnumValue("Thur")] Thursday = 0x10, [EnumValue("Fri")] Friday = 0x20, [EnumValue("Sat")] Saturday = 0x40 }输出结果为:
Attribute Helper 文件
public static class ReflectionHelpers { public static string GetCustomEnumStringValue(object objEnum) { var fi = objEnum.GetType().GetField(objEnum.ToString()); var attributes = (EnumValueAttribute[])fi.GetCustomAttributes(typeof(EnumValueAttribute), false); return (attributes.Length > 0) ? attributes[0].EnumValue : objEnum.ToString(); } public static string StringValue(this Enum value) { return GetCustomEnumStringValue(value); } } public class EnumValueAttribute : Attribute { public string EnumValue; public EnumValueAttribute(string enumValue) { this.EnumValue = enumValue; } public override string ToString() { return this.EnumValue; } } 原理:通过 Attribute 来增加一下枚举的相应的string value