返回(T)请求[key];
本文关键字:key 请求 返回 | 更新日期: 2023-09-27 17:58:53
我有这个现有的代码,它运行得很好。
public static T SessionGet<T>(string key)
{
if (Session[key] == null)
return default(T);
else
return (T)Session[key];
}
我想制作一个适用于Request的版本。我意识到Request是基于字符串的。那么,如果不需要根据typeof(T)放置一个大的开关,我该如何更改代码,使错误不会发生,如下面的注释所示。
return (T)Request[key]; // Cannot cast expression of type 'string' to type '(T)'
这是函数。。。。
public static T RequestGet<T>(string key)
{
if (Request[key] == null)
return default(T);
else
return (T)Request[key];
}
感谢
您可以使用Convert.ChangeType
方法来实现这一点,但您依赖于正确的输入,否则您将得到一个异常。Request
处理用户提供的数据,因此这种假设具有极大的风险。这与您使用Session
所做的不同,因为您可以控制进入Session
的内容。Request
的情况并非如此。
public static T RequestGet<T>(string key)
{
if (Request[key] == null)
{
return default(T);
}
else
{
return (T)Convert.ChangeType(Request[key], typeof(T));
// return (T)Request[key];
}
}
在您的情况下,我可能希望使用更安全的方法来获取、验证和解析用户输入,这样应用程序就不会变成一堆异常处理或错误屏幕。