Soci (Soczó Zsolt) szakmai blogja

2012.09.11.

Nullable típusok attributumokban

Filed under: .NET,C#,Szakmai élet — Soczó Zsolt @ 08:38

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.

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress