好了,現在你知道真正的枚舉LY是,你可以給一個方便的字符串句柄號碼清單喜歡:
public enum ErrorCode
{
CTCLSM = 1,
CTSTRPH = 2,
FBR = 3,
SNF = 4
}
而且,@StriplingWarrior顯示,你可以走這麼遠,通過獲取枚舉字符串名稱和更換下劃線等,但我認爲你想要的是將一個漂亮的人字符串與每個值相關聯的方式。這個怎麼樣?
public enum ErrorCode
{
[EnumDisplayName("Cataclysm")]
CTCLSM = 1,
[EnumDisplayName("Catastrophe")]
CTSTRPH = 2,
[EnumDisplayName("Fubar")]
FBR = 3,
[EnumDisplayName("Snafu")]
SNF = 4
}
好了有可能是一些在System.ComponentModel
,它這一點 - 讓我知道。我的解決方案的代碼是在這裏:
[AttributeUsage(AttributeTargets.Field)]
public class EnumDisplayNameAttribute : System.Attribute
{
public string DisplayName { get; set; }
public EnumDisplayNameAttribute(string displayName)
{
DisplayName = displayName;
}
}
而時髦的枚舉擴展,使得它可能:
public static string PrettyFormat(this Enum enumValue)
{
string text = enumValue.ToString();
EnumDisplayNameAttribute displayName = (EnumDisplayNameAttribute)enumValue.GetType().GetField(text).GetCustomAttributes(typeof(EnumDisplayNameAttribute), false).SingleOrDefault();
if (displayName != null)
text = displayName.DisplayName;
else
text = text.PrettySpace().Capitalize(true);
return text;
}
因此得到人性化的價值了,你可以只是做ErrorCode.CTSTRPH.PrettyFormat()
爲什麼你想要Simple_User intead嗎?如果你確實爲什麼不改變枚舉值?無論如何你想完成什麼,因爲它可能是你想要使用一個枚舉,你可能需要別的東西,需要更多的上下文。 –
你的代碼不能編譯... –
解釋一下,你是如何編譯這段代碼併產生不需要的結果的? :-) –