字节枚举中的字符串

时间:2013-01-25 15:11:24

标签: c# .net string enums

  

可能重复:
  C# Enums - can my enums have friendly names?
  Cast string to enum with enum attribute

我有字节值的枚举:

enum MarketingEventType : byte {MARKETING_CAMPAIGN, TELESALES, MARKETING_ACTIONS};

我想给出所有元素名称,我将通过ToSting()方法获得。 例如:

MarketingEventType.TELESALES.ToString(); // I get "bla bla bla"
MarketingEventType.MARKETING_ACTIONS.ToString(); // I get "la la la"

从BYTE到STRING没有改变枚举类型的可能吗?

3 个答案:

答案 0 :(得分:6)

您无法将枚举类型设置为string。有效的基本类型包括bytesbyteshortushortintuintlong和{{1 }}

但是,您可以使用ulong属性:

Description

检索枚举描述有点乱,但你可以使用这个方法(甚至可以用它来制作扩展方法!):

enum MarketingEventType
{
    [Description("bla bla bla")]
    TELESALES,
}

答案 1 :(得分:0)

如果您想要的只是“营销”和“TELESALES”,那么您将执行

MarketingEventType.TELESALES.ToString();

......正如你在问题中那样。

如果您希望基础字节值为“0”和“1”,则执行

MarketingEventType.TELESALES.ToString("d");

答案 2 :(得分:0)

为什么不简单地创建一个为你的枚举值返回字符串的方法?

public string GetMarketingEventName(MarketingEventType eventType)
{
    switch(eventType)
    {
        case MarketingEventType.MARKETING_CAMPAIGN: return "blah blah blah";
        case MarketingEventType.TELESALES: return "lalala";
        case MarketingEventType.MARKETING_ACTIONS: return "boo";
        default:
            throw new ArgumentException("eventType");
    }
}

你为什么要点?因为您需要在UI上显示字符串,所以将UI与域分开是一种很好的做法。所以,我认为控制器类上的这种方法比你域中的属性更好。还要考虑本地化。