我正在尝试将一堆类似的方法组合成一个通用方法。我有几种方法可以返回查询字符串的值,如果该查询字符串不存在或格式不正确,则返回 null。如果所有类型本身都可为空,那么这将很容易,但我必须对整数和日期使用可为空的泛型类型。
这就是我现在所拥有的。但是,如果数值无效,它会传回 0,但不幸的是,在我的场景中这是一个有效值。有人可以帮我吗?谢谢!
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;
}
如果您指定要返回的默认值而不是使用 default(T) 会怎样?
public static T GetQueryString<T>(string key, T defaultValue) {...}
它也使调用它变得更容易:
var intValue = GetQueryString("intParm", Int32.MinValue);
var strValue = GetQueryString("strParm", "");
var dtmValue = GetQueryString("dtmPatm", DateTime.Now); // eg use today's date if not specified
缺点是您需要魔术值来表示无效/丢失的查询字符串值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)