2016-03-04 96 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' 
} 
相關問題