2016-03-04 75 views
3

我想让我的枚举返回字符串值。不是Enum描述,它们必须返回一个字符串值,而不是int。下面的代码示例正是我的想法,但显然不能编译。可以枚举返回字符串而不是整数?

public enum TransactionType 
{ 
    CreditCard = "C", 
    DebitCard = "D", 
    CreditCardAuthenticationWithAuthorization = "CA", 
    DebitCardAuthenticationWithAuthorization = "DA" 
} 

任何想法?

+1

你怎么称呼你的枚举成员到底是什么? –

回答

5

你不能,你可以做的就是创建一个静态类是“行为”有点像字符串值枚举:

public static class TransactionType 
{ 
    public const string CreditCard = "C"; 
    ... 
} 

您可以访问他们,那么以同样的方式:

string creditCardValue = TransactionType.CreditCard; 

另一种选择是与名称空间中的DescriptionAttributeSystem.ComponentModel一起工作,但是那么你的枚举仍然会有基础数值,所以也许这不完全是你所需要的。

例子:

public enum TransactionType 
{ 
    [Description("C")] 
    CreditCard, 
    ... 
} 
+0

这样做。谢谢! –

+0

关于您编辑的答案,我也发现了这个解决方案。但我希望它看起来像是要使用我的API的开发人员的枚举。我想在第二个解决方案,你需要不同的访问。 –

+0

@NecatiHakanErdogan是的,我认为没有其他方法可以访问它们,而不是使用一些反射。得到描述真的很不方便。 –

1

没有,也没有办法。 你可以选择int,long,byte,short - 通常是数字类型。

你可以做“一些作弊”,只为char值(因为char是含蓄铸造为int):

public enum MyEnum 
{ 
    Value = 'a' 
} 
相关问题