Используйте атрибут Description, чтобы декодировать ваши значения перечисления. Я бы предложил добавить файл resx
для ресурсов, чтобы вы могли легче локализовать. Если вы жестко закодировали «Ошибка памяти», становится больше работы, чтобы иметь возможность изменить это на другой язык (как упоминал Ханс Пассант в комментариях).
public enum FailureDescription
{
[Description("Memory Failure")] //hardcoding English
MemoryFailure,
[Description(MyStringsResourceFile.FragmentationDescription)] //reading from a resx file makes localisation easier
Fragmentation,
[Description(MyStringsResourceFile.SegmentationFaultDescription)]
SegmentationFault
}
Вы можете создать метод, или метод расширения (как показано) для чтения значения Description
.
public static class Extensions
{
public static string GetDescription(this Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null &&
attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
}
Затем вызовите метод как так
Console.WriteLine(FailureDescription.MemoryFailure.GetDescription());
Как я знаю ToSttring работает по умолчанию перечислений .: http://msdn.microsoft. com/en-us/library/a0h36syw% 28v = vs.110% 29.aspx –
Используйте атрибут [Flags] – Sam
@ LóriNóda - да. Как добавить пробелы? – Yakov