Хорошо, теперь вы знаете, что enum на самом деле представляет собой список чисел, которым вы можете дать удобный дескриптор строки:
public enum ErrorCode
{
CTCLSM = 1,
CTSTRPH = 2,
FBR = 3,
SNF = 4
}
Кроме того, как показала @StriplingWarrior, вы можете пойти так далеко,получение имени строки enum и замена подчеркиваний и т. д. Но я думаю, что вам нужен способ связать красивую человеческую строку с каждым значением.Как насчет этого?
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;
}
}
И необычное расширение Enum, которое делает это возможным:
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()