关于如何方便使用枚举

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

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值