Nullable típusok attributumokban
CLR attributumokban sajnos nem lehet használni nullable típusokat, mivel ezeket metaadatként tárolja el a compiler, és az nincs felkészítve struktúrákra. Igazából még a decimalt sem eszi, ami elég bosszantó, ez azért beleférhetett volna.
Most mégis kellett nullable és ráadásul decimal att param, így kerültem ki:
public class SteppingSpecificationAttribute : Attribute
{
private double increment;
private double startValue;
private double endValue;
public SteppingSpecificationAttribute(double defaultValue)
{
DefaultValue = defaultValue;
}
public bool HasValueIncrement { get; private set; }
public bool HasValueStartValue { get; private set; }
public bool HasValueEndValue { get; private set; }
public double Increment
{
get { return increment; }
set
{
increment = value;
HasValueIncrement = true;
}
}
public double StartValue
{
get { return startValue; }
set
{
startValue = value;
HasValueStartValue = true;
}
}
public double EndValue
{
get { return endValue; }
set
{
endValue = value;
HasValueEndValue = true;
}
}
public double DefaultValue { get; set; }
}
Nem elegáns, de működik. Valakinek van jobb ötlete?
Később, amikor kiveszem a property-k értékét, akkor nézem meg, mi null és mi nem, valamint akkor konvertálok decimalra. A double-decimal konverzió okozhat adatvesztést, de ismerem milyen számok mennek be, ezekkel nincs ilyen gond.