您的位置:首页 > 其它

关于如何方便使用枚举

2017-10-11 09:06 260 查看
近期朋友给我发来他们的工程代码,被我发现居然有中文枚举。。。。。

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

不多说上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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: