Sto cercando di combinare una serie di metodi simili in un metodo generico. Ho diversi metodi che restituiscono il valore di una querystring, o null se quella querystring non esiste o non è nel formato corretto. Questo sarebbe abbastanza facile se tutti i tipi fossero nativamente nullable, ma devo usare il tipo generico nullable per numeri interi e date.
Ecco cosa ho adesso. Tuttavia, restituirà uno 0 se un valore numerico non è valido e sfortunatamente è un valore valido nei miei scenari. Qualcuno può aiutarmi? Grazie!
public static T GetQueryString<T>(string key) where T : IConvertible
{
T result = default(T);
if (String.IsNullOrEmpty(HttpContext.Current.Request.QueryString[key]) == false)
{
string value = HttpContext.Current.Request.QueryString[key];
try
{
result = (T)Convert.ChangeType(value, typeof(T));
}
catch
{
//Could not convert. Pass back default value...
result = default(T);
}
}
return result;
}