Как получить строковые значения аттрибутов из enum? - C#
Формулировка задачи:
Здравствуйте!
как получить строковые значения аттрибутов из enum?
Вот код:
Мне нужен класс (перечисление), который содержит Result codes (по другому Status codes, Exit codes, кому как нравится). Написал такую штуку (неочень удобную, т.к. мне по сути нужен только код ошибки и его значение), как из неё получить значение аттрибута?
Листинг программы
- 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; }
- }
- }
- }
Может существуют стандартные инструменты для работы со статус кодами?
такие конструкции также не удобны т.к. код состояния необходимо хранить отдельно
Листинг программы
- 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; }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д