Ik kan niet wachten...
...op whidbey en in dit geval c# 2.0
met het validatie framework van e-platform loop ik tegen het feit aan dat valuetypes niet geboxed kunnen worden naar null.
hierdoor kan ik niet zien of een valuetype is geinitialiseerd.
Om dit verhaal wat duidelijker te maken nu mijn praktijk probleem waar ik tegenaan loop:
ik wil met het validatieframework een veld uit de database valideren dat optioneel is en een valuetype is.
bijvoorbeeld een byte (System.Int16) voor het veld leeftijd. Maar als er een leeftijd is ingevuld, dan moet deze minimaal 16 jaar zijn.
Wanneer een gebruiker op een scherm geen leeftijd invult is dit correct want het veld is optioneel.
In de business laag gaat het validatieframework alle velden van het scherm valideren en komt bij Leeftijd.
Leeftijd is niet null dus wordt het gevalideerd. Default heeft een System.Int16 een waarde van 0.
Maar de validatieregels zeggen dat de minimale leeftijd 16 moet zijn. Er treedt een validatie error op. En terecht.
Het validatieframework kan dus niet omgaan met optionele velden die valuetype zijn en die een waarde moeten hebben van > 0.
Helaas kan ik hier niets aan doen. De enige oplossing die ik kon bedenken is een flag bijhouden wanneer een veld veranderd is. (dirty flag)
alleen wanneer het veld dirty is, deze valideren.
Het alternatief staat mij beter aan: wachten op c# 2.0. Hier zijn er alleen nog maar ReferenceTypes.
Waardoor de Primitive Types in .NET 1.1 wel null of NaN kunnen zijn zijn.