可能重复:
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没有改变枚举类型的可能吗?
答案 0 :(得分:6)
您无法将枚举类型设置为string
。有效的基本类型包括byte
,sbyte
,short
,ushort
,int
,uint
,long
和{{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与域分开是一种很好的做法。所以,我认为控制器类上的这种方法比你域中的属性更好。还要考虑本地化。