Sempre con l'introduzione del framework 2.0 sono stati introdotti anche i tipi nullable che permettevano di valorizzare a null un value type (come un double o una data), con grande sollievo di tutte quelle persone che avevano bisogno di database nelle proprie applicazioni! Purtroppo ci è accorti di una profonda mancanza (che sussiste tuttora, con la versione 4.0 del framework). La possibilità di fare il parsing utilizzando la capacità dei nullable di impostarsi a null (!).
public static double? ParseDoubleNullable(object source) { double d; if (double.TryParse(source.ToString(), out d)) return d; else if (double.TryParse(source.ToString(), System.Globalization.NumberStyles.Currency, null, out d)) return d; else return null; }questo metodo è funzionale, ma scomodo, perchè necessita di ricordarsi il namespace dove risiede l'estensione e rende faragginosa la lettura del codice.
Per risolvere questi piccoli problemi possiamo spingerci oltre e andare a creare un metodo di estensione che si applichi a stringhe (o più in generale a un'object) e che permetta di restituirci un double?.
public static double? ParseDoubleNullable(this object source) { double d; if (double.TryParse(source.ToString(), out d)) return d; else if (double.TryParse(source.ToString(), System.Globalization.NumberStyles.Currency, null, out d)) return d; else return null; }Questo, chiaramente, apre tutta una serie di possibili metodi di parsing!
Nessun commento:
Posta un commento