Есть enum содержащий определенный набор значений (state)
public enum State : int {
CONNECTION_ERROR,
CONNECTION_COMPLETE,
WAIT_CONNECTION
}
В отчете есть значение поля State и оно выводится во view. Собственно выглядит например так: Состояние : CONNECTION_COMPLETE. Нужно что бы вместо названия поля enum'a выводился понятный текст (Ошибка соединение, Соединение завершено успешно, Ожидание соединения). Пробовал через атрибут [Display(name="...")] не помогло, выводится именно название строки в enum'e. Может кто знает как решить такую проблему?
Можно использовать Description из компонентной модели:
using System.ComponentModel;
namespace Main {
public enum State : byte
{
[Description("Ошибка соединения")]
CONNECTION_ERROR,
[Description("Соединение выполнено")]
CONNECTION_COMPLETE,
[Description("Ожидание соединения")]
WAIT_CONNECTION
}
}
Затем создаем расширяющий метод для перечислений, который будет возвращать нам описание:
namespace Main.Extensions
{
/// <summary>
/// Расширение Enum
/// </summary>
public static class EnumExtensions
{
/// <summary>
/// Получить атрибут "Описание"
/// </summary>
/// <param name="value">Значение перечисления</param>
/// <returns>Значение атрибута "Описание"</returns>
public static string GetDescription(this Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null &&
attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
}
}
И используем его:
State.CONNECTION_COMPLETE.GetDescription();
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости