Как получить строковые значения аттрибутов из 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д