Esta es una restricción de CLR. Sólo las constantes primitivas o las matrices de primitivas pueden utilizarse como parámetros de atributo. La razón es que un atributo debe estar codificado completamente en metadatos. Esto es diferente al cuerpo de un método que está codificado en IL. El uso de metadatos solo restringe severamente el alcance de los valores que se pueden usar. En la versión actual de CLR, los valores de metadatos se limitan a primitivas, nulos, tipos y matrices de primitivas (es posible que se hayan perdido una menor).
Los decimales, mientras que un tipo básico no son un tipo primitivo y, por lo tanto, no se pueden representar en metadatos, lo que evita que sea un parámetro de atributo.