关于如何方便使用枚举

xiaoxiao2021-02-28  6

近期朋友给我发来他们的工程代码,被我发现居然有中文枚举。。。。。

没事闲的  帮他改写一下并且重新整理一下代码

不多说上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

转载请注明原文地址: https://www.6miu.com/read-1250282.html

最新回复(0)