Voglio taggare i valori delle variabili con un attributo "qualità" che può essere modificato dinamicamente durante l'esecuzione dei miei programmi. Il mio primo pensiero è stato quello di abusare della funzionalità degli attributi standard taggando il valore con il mio attributo di qualità personalizzato. EG
[QualityAttribute(Quality.Bad)]
int value = 0;
...
value = 1;
(** somehow set QualityAttribute of value to Quality.Good **)
Ma da quello che ho visto gli attributi erano intesi come una misura statica e sono inseriti in meta-dati, rendendo apparentemente impossibile ciò che voglio fare.
Un'alternativa sarebbe quella di creare una struct / class che contenga sia la variabile che la qualità. EG
class Value
{
public Quality quality = Quality.Bad;
public int value = 0;
}
...
Value value = new Value();
value.value = 1;
value.quality = Quality.Good;
Funzionerà (ed è simile a ciò che viene usato per supportare i tipi nullable), ma non mi piace il livello aggiuntivo di riferimento indiretto per ottenere il valore.
Esiste un altro modo che consente l'accesso diretto al valore e supporta facilmente il valore di tagging con un attributo personalizzato e dinamicamente modificabile?