Как получить строковые значения аттрибутов из 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; }
}
}