domenica 27 settembre 2009

Validazione di DateTimeOffset con Enterprise Library Validation Application Block

Il tipo di dato DateTimeOffset è stato introdotto con .NET Framework 3.5 ed è simile a DateTime ma ha il vantaggio di aggiungere le informazioni di offset dal GMT in modo da poter legare una data ad un certo fuso orario.

Ho iniziato quindi ad utilizzarlo al posto del classico DateTime per ogni data che avesse bisogno anche delle informazioni del fuso orario. Ovviamente ho continuato ad usare DateTime per tutte le date che hanno un valore slegato dal fuso orario, ad esempio l'orario di apertura di un negozio.
Per dettagli sull' utilizzo di DateTimeOffset rimando a questo post del team BCL.

Per quanto riguarda la validazione di DateTimeOffset ho avuto qualche problema.
Solitamente per la validazione utilizzo il comodissimo Validation Application Block della libreria Entrprise Library, purtroppo però non esiste il corrispondente di DateTimeRangeValidator per DateTimeOffset.

Ho provato ugualmente ad utilizzare DateTimeRangeValidator con il tipo DateTimeOffset ma ho ricevuto il seguente messaggio: "Value to validate is not of the expected type: expected System.DateTime but got System.DateTimeOffset instead".

Ho pensato allora di chiedere se esiste qualcosa a rigurardo sul forum di Entreprise Library ed ho avuto una veloce e risolutiva risposta che illustra come implementare un custom RangeValidator per il tipo DateTimeOffset. Funziona perfettamente. Peccato solamente non averci pensato da solo.

E' possibile recuperare il codice dalla discussione stessa.