Looking for c# Keywords? Try Ask4Keywords

C# Language Добавление дополнительной информации описания к значению перечисления


пример

В некоторых случаях вам может потребоваться добавить дополнительное описание к значению перечисления, например, когда значение enum становится менее читаемым, чем то, что вы можете отобразить пользователю. В таких случаях вы можете использовать класс System.ComponentModel.DescriptionAttribute .

Например:

public enum PossibleResults
{
    [Description("Success")]
    OK = 1,
    [Description("File not found")]
    FileNotFound = 2,
    [Description("Access denied")]
    AccessDenied = 3
}

Теперь, если вы хотите вернуть описание определенного значения перечисления, вы можете сделать следующее:

public static string GetDescriptionAttribute(PossibleResults result)
{
        return ((DescriptionAttribute)Attribute.GetCustomAttribute((result.GetType().GetField(result.ToString())), typeof(DescriptionAttribute))).Description;
}

static void Main(string[] args)
{
    PossibleResults result = PossibleResults.FileNotFound;
    Console.WriteLine(result); // Prints "FileNotFound"
    Console.WriteLine(GetDescriptionAttribute(result)); // Prints "File not found"
}

Это также может быть легко преобразовано в метод расширения для всех перечислений:

static class EnumExtensions
{
    public static string GetDescription(this Enum enumValue)
    {
        return ((DescriptionAttribute)Attribute.GetCustomAttribute((enumValue.GetType().GetField(enumValue.ToString())), typeof(DescriptionAttribute))).Description;
    }
}

И тогда легко использовать так: Console.WriteLine(result.GetDescription());