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

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

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

Здравствуйте! как получить строковые значения аттрибутов из enum? Вот код:
Листинг программы
  1. public class ResultCode
  2. {
  3. public enum rc
  4. {
  5. [StringValue("Запрос успешно выполнен")]
  6. OK_MSG = 0,
  7. [StringValue("Пользователь с таким идентификатором отсутствует")]
  8. ERR_USER_MISSING = 5,
  9. [StringValue("Пользователь не авторизован")]
  10. ERR_USER_IS_NOT_AUTHORIZED = 7,
  11. [StringValue("Запись отсутствует")]
  12. ERR_ROW_MISSING = 55,
  13. [StringValue("Совпадений нет")]
  14. NO_MATCHES = 555,
  15. [StringValue("Ошибка выполнения")]
  16. ERR_MSG = 90
  17.  
  18. }
  19. public class StringValueAttribute : System.Attribute
  20. {
  21. private string _value;
  22. public StringValueAttribute(string value)
  23. {
  24. _value = value;
  25. }
  26. public string Value
  27. {
  28. get { return _value; }
  29. }
  30. }
  31. }
Мне нужен класс (перечисление), который содержит Result codes (по другому Status codes, Exit codes, кому как нравится). Написал такую штуку (неочень удобную, т.к. мне по сути нужен только код ошибки и его значение), как из неё получить значение аттрибута?
Может существуют стандартные инструменты для работы со статус кодами?
такие конструкции также не удобны т.к. код состояния необходимо хранить отдельно
Листинг программы
  1. public static readonly string Val1 = "MyVal1";
  2. public static readonly string Val2 = "MyVal2";
  3. public static readonly string Val3 = "MyVal3";

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

textual
Листинг программы
  1. using System;
  2. using System.Reflection;
  3.  
  4.  
  5.  
  6. public class Program
  7. {
  8.     static void Main()
  9.     {
  10.         RC rc = RC.ERR_MSG;
  11.         MemberInfo[] members = typeof(RC).GetMember(rc.ToString());
  12.         foreach(MemberInfo member in members)
  13.         {
  14.             Console.WriteLine(member.GetCustomAttribute<StringValueAttribute>().Value);
  15.         }
  16.         Console.ReadLine();
  17.     }
  18. }
  19. [StringValue("Hello!")]
  20. public enum RC
  21. {
  22.     [StringValue("Запрос успешно выполнен")]
  23.     OK_MSG = 0,
  24.  
  25.     [StringValue("Пользователь с таким идентификатором отсутствует")]
  26.     ERR_USER_MISSING = 5,
  27.  
  28.     [StringValue("Пользователь не авторизован")]
  29.     ERR_USER_IS_NOT_AUTHORIZED = 7,
  30.  
  31.     [StringValue("Запись отсутствует")]
  32.     ERR_ROW_MISSING = 55,
  33.  
  34.     [StringValue("Совпадений нет")]
  35.     NO_MATCHES = 555,
  36.  
  37.     [StringValue("Ошибка выполнения")]
  38.     ERR_MSG = 90
  39.  
  40.  
  41. }
  42.  
  43.     public class StringValueAttribute : System.Attribute
  44.     {
  45.  
  46.         private string _value;
  47.  
  48.         public StringValueAttribute(string value)
  49.         {
  50.             _value = value;
  51.         }
  52.  
  53.         public string Value
  54.         {
  55.             get { return _value; }
  56.         }
  57.     }

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


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

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

9   голосов , оценка 3.556 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы