Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Получить значение аттрибута


Автор: cupper 16.12.2010, 12:07
Здравствуйте нужно получить значение аттрибута.
Есть enum
Код

public enum AtomStatus {

        [Description("Действующий без ограничений")]
        WithNoRestrictions
    }

есть свойство класса которое возвращает элемент из него
Код

public AtomStatus Status {
            get {
                return AtomStatus.WithNoRestrictions;
            }
        }

и есть код где нужно получить аттрибут Description возвращаемого значения, и единственный способ который я пока нашел это
Код

DescriptionAttribute[] attributesStatus = (DescriptionAttribute[])atom.Status.GetType().GetField(atom.Status.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
            this.cellState.Text = (attributesStatus.Length > 0) ? attributesStatus[0].Description : String.Empty;

но это АХТУН. Есть более человеческий и короткий, простой способ сделать тоже самое (бех массивов, кучи преобразований и в одну строчку).
А то этот способ это полный АХТУНГ и нужно бегать и бить всех ногами, чтобы так никто больше ни делал.

Автор: CYBERDREAM 16.12.2010, 12:12
я бы сделал класс обертку для этого
описывал тут пример: http://base.vingrad.ru/view/3150-Opisanie-Enum

Добавлено через 5 минут и 58 секунд
поправил только что на статик класс, удобнее использовать

Автор: cupper 16.12.2010, 12:40
позже сообщили что в проекте есть такая обертка. Но сам факт того что это вполне нормальное использование С# приводит в ступр :(

Автор: CYBERDREAM 16.12.2010, 12:45
видимо не все так просто

Автор: KelTron 16.12.2010, 13:28
Цитата(cupper @  16.12.2010,  12:40 Найти цитируемый пост)
Но сам факт того что это вполне нормальное использование С# приводит в ступр

Ну а что тут такого, это reflection. Ты видать ещё с вордом или экселем через него не работал, там ещё страшней ..)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)