gpt4 book ai didi

c# - 返回 (T)Request[key];

转载 作者:行者123 更新时间:2023-12-02 16:13:28 25 4
gpt4 key购买 nike

我现有的代码运行良好。

public static T SessionGet<T>(string key)
{
if (Session[key] == null)
return default(T);
else
return (T)Session[key];
}

我想制作一个适用于 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方法来完成此操作,但您依赖于输入正确,否则您会得到一个异常(exception)。 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];
}
}

站在你的立场上,我可能想要依靠更安全的方法来获取、验证和解析用户输入,这样应用程序就不会变成一堆异常处理或错误屏幕。

关于c# - 返回 (T)Request[key];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com