К сожалению, вы не можете использовать десятичные знаки в значениях атрибутов, так как сам CLR на самом деле не знает о типе System.Decimal
- это не примитивный тип, такой как int, double и т. Д. Компилятор C # в основном подделывает его для константных полей введите десятичное число, но оно не может достичь того же эффекта с атрибутами.
Из спецификации C # 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 может быть
решено к одному из следующих:
- A
постоянное значение.
- Объект System.Type.
- Одномерный массив
атрибут-аргументов-выражений.