Dies ist eine CLR-Einschränkung. Nur primitive Konstanten oder Arrays von Primitiven können als Attributparameter verwendet werden. Der Grund dafür ist, dass ein Attribut vollständig in Metadaten codiert werden muss. Dies ist anders als ein Methodenkörper, der in IL codiert ist. Die Verwendung von MetaData schränkt den Umfang der verwendbaren Werte nur stark ein. In der aktuellen Version der CLR sind Metadatenwerte auf Primitive, Nullwerte, Typen und Arrays von Primitiven beschränkt (möglicherweise haben sie einen kleineren Wert verpasst).
Dezimalstellen während eines Basistyps sind kein primitiver Typ und können daher nicht in Metadaten dargestellt werden, wodurch verhindert wird, dass sie ein Attributparameter ist.
Danke, ich dachte dezimal war ein primitiver Typ :-) – rjlopes
Ist das immer noch ein Problem mit Framework 4.0? und 4.5, 4.6.x? – midspace
@midspace, nicht wirklich ein Problem, nur eine Einschränkung, durch das Design auferlegt. Es ist bedauerlich, aber gute Chancen, dass es nie weggehen wird. –