Аргумент атрибута должен быть константным выражением
Есть ли способ обхода проблемы для следующего вопроса?
Аргумент атрибута должен быть константным выражением
Я хочу использовать десятичные знаки в параметре атрибутов.
Ответ 1
К сожалению, вы не можете использовать десятичные знаки в значениях атрибутов, так как сам CLR не знает о типе System.Decimal - это не примитивный тип типа int, double и т.д. Компилятор С# в основном подделывает его для полей const тип десятичный, но он не может добиться такого же эффекта с атрибутами.
Из спецификации С# 3, раздел 17.1.3:
Типы позиционных и названных параметры для класса атрибута: ограниченный параметром атрибута типы, которые:
Одно из следующих типы: bool, byte, char, double, float, int, long, sbyte, short, строка, uint, ulong, ushort.
Объект типа.
Тип System.Type.
Перечисление тип, если он открыт доступность и типы, в которых он вложен (если есть), также имеет доступность (§17.2).
Одномерные массивы выше типы.
Затем в разделе 17.2:
Выражение E является выражением атрибута-аргумента, если все следующие утверждения > true:
Тип E является атрибутом тип параметра (§17.1.3).
В время компиляции, значение E может быть разрешено к одному из следующих: