Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

September 11, 2012 / by Zsolt Soczó

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.

Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.