Как получить строковые значения аттрибутов из enum? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! как получить строковые значения аттрибутов из enum? Вот код:
 public class ResultCode
    {
        public enum rc
        {
            [StringValue("Запрос успешно выполнен")]
            OK_MSG = 0,
 
            [StringValue("Пользователь с таким идентификатором отсутствует")]
            ERR_USER_MISSING = 5,
 
            [StringValue("Пользователь не авторизован")]
            ERR_USER_IS_NOT_AUTHORIZED = 7,
 
            [StringValue("Запись отсутствует")]
            ERR_ROW_MISSING = 55,
 
            [StringValue("Совпадений нет")]
            NO_MATCHES = 555,
 
            [StringValue("Ошибка выполнения")]
            ERR_MSG = 90

        }
        public class StringValueAttribute : System.Attribute
        {
 
            private string _value;
 
            public StringValueAttribute(string value)
            {
                _value = value;
            }
 
            public string Value
            {
                get { return _value; }
            }
}
}
Мне нужен класс (перечисление), который содержит Result codes (по другому Status codes, Exit codes, кому как нравится). Написал такую штуку (неочень удобную, т.к. мне по сути нужен только код ошибки и его значение), как из неё получить значение аттрибута?
Может существуют стандартные инструменты для работы со статус кодами?
такие конструкции также не удобны т.к. код состояния необходимо хранить отдельно
    public static readonly string Val1 = "MyVal1";
    public static readonly string Val2 = "MyVal2";
    public static readonly string Val3 = "MyVal3";

Решение задачи: «Как получить строковые значения аттрибутов из enum?»

textual
Листинг программы
using System;
using System.Reflection;
 
 
 
public class Program
{
    static void Main()
    {
        RC rc = RC.ERR_MSG;
        MemberInfo[] members = typeof(RC).GetMember(rc.ToString());
        foreach(MemberInfo member in members)
        {
            Console.WriteLine(member.GetCustomAttribute<StringValueAttribute>().Value);
        }
        Console.ReadLine();
    }
}
[StringValue("Hello!")]
public enum RC
{
    [StringValue("Запрос успешно выполнен")]
    OK_MSG = 0,
 
    [StringValue("Пользователь с таким идентификатором отсутствует")]
    ERR_USER_MISSING = 5,
 
    [StringValue("Пользователь не авторизован")]
    ERR_USER_IS_NOT_AUTHORIZED = 7,
 
    [StringValue("Запись отсутствует")]
    ERR_ROW_MISSING = 55,
 
    [StringValue("Совпадений нет")]
    NO_MATCHES = 555,
 
    [StringValue("Ошибка выполнения")]
    ERR_MSG = 90
 
 
}
 
    public class StringValueAttribute : System.Attribute
    {
 
        private string _value;
 
        public StringValueAttribute(string value)
        {
            _value = value;
        }
 
        public string Value
        {
            get { return _value; }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы