I'm attempting to integrate several comparable techniques into a single generic method. I have a few methods that return the value of a querystring, or null if the querystring doesn't exist or isn't formatted properly. This would be simple if all of the types were natively nullable, however for numbers and dates, I have to use the nullable generic type.
Here's what I've got right now. However, if a numeric number is invalid, it will return a 0, which is regrettably an acceptable value in my cases. Is there anyone who can assist me?
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;
}