gpt4 book ai didi

.net - 'String' 的值不能转换为类型 'T' 。获取查询字符串的通用函数?

转载 作者:行者123 更新时间:2023-12-04 01:43:08 24 4
gpt4 key购买 nike

我有这个功能:

Public Shared Function GetQueryStringValue(Of T As Structure)(ByVal queryStringVariable As String) As T
Dim queryStringObject As Nullable(Of T) = Nothing
If queryStringVariable <> Nothing Then
If HttpContext.Current.Request.QueryString(queryStringVariable) IsNot Nothing Then
queryStringObject = DirectCast(HttpContext.Current.Request.QueryString(queryStringVariable), T)
End If
End If

Return queryStringObject
End Function

我希望这样称呼:
Dim userId As Integer = SessionUtil.GetSessionValue(Of Integer)("uid")

我试图使它通用,因为最后查询字符串值至少可以是整数或字符串,但也可能是 double 值等。但我收到错误:
Value of 'String' cannot be converted to Type 'T'
我对 Session 变量做了完全相同的事情并且它起作用了。有谁知道使这项工作的方法?

编辑:下面的 Jonathan Allen 使用 CObj() 或 CTypeDynamic() 有一个更简单的答案。但以下也适用于 Convert string to nullable type (int, double, etc...)
Dim conv As TypeConverter = TypeDescriptor.GetConverter(GetType(T))
queryStringObject = DirectCast(conv.ConvertFrom(queryStringVariable), T)

最佳答案

最安全的方法是使用 CTypeDynamic。这将确保使用隐式/显式运算符。

Function Convert(Of T)(s As String) As T
Return Microsoft.VisualBasic.CTypeDynamic(Of T)(s)
End Function

这适用于简单类型,但不适用于复杂类型。
Function Convert(Of T)(s As String) As T
Return CType(CObj(s), T)
End Function

关于.net - 'String' 的值不能转换为类型 'T' 。获取查询字符串的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783049/

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