Esiste una soluzione alternativa per il seguente problema?Un argomento attributo deve essere un'espressione costante
Un argomento attributo deve essere un'espressione costante
voglio usare i decimali nel parametro di un attributo.
Esiste una soluzione alternativa per il seguente problema?Un argomento attributo deve essere un'espressione costante
Un argomento attributo deve essere un'espressione costante
voglio usare i decimali nel parametro di un attributo.
Sfortunatamente non è possibile utilizzare i decimali nei valori degli attributi, in quanto il CLR di per sé non conosce il tipo System.Decimal
- non è un tipo primitivo come int, double ecc. Il compilatore C# fondamentalmente lo falsifica per i campi const del tipo decimale, ma non può ottenere lo stesso effetto con gli attributi.
Dalla C# 3 spec, sezione 17.1.3:
I tipi di posizionali e denominati parametri per una classe di attributo sono limitate al parametro di attributo tipi, che sono:
- Uno dei seguenti tipi : bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort.
- L'oggetto tipo.
- Il tipo System.Type.
- Un tipo enum , purché abbia pubblico accessibilità ei tipi in cui è annidata (se presenti) hanno anche pubblici accessibilità (§17.2).
- Matrici unidimensionali dei tipi precedenti.
Poi più tardi nella sezione 17.2:
Un'espressione E è un attributo argomento-espressione se tutte le seguenti affermazioni sono> true:
- Il tipo di E è un attributo tipo di parametro (§17.1.3).
- A compilazione, il valore di E può essere risolto a uno dei seguenti:
- Un valore costante.
- Un oggetto System.Type.
- Un array unidimensionale di espressioni-argomento-attributo .
Cosa attributo? – AMissico