请问如何使用函数返回的类型定义?如何使用从函数返回的类型定义?
下面的函数编译,但我得到:BC30002“Type'DB.ResolveType'未定义。”当我尝试使用它
Public NotInheritable Class DB
Public Shared Function ResolveType(type As String) As Type
Select Case type
Case "Stop-Action-Request" : Return GetType(cheque_action)
Case "Cheque-Book-Request" : Return GetType(cheque_book_request)
Case "Confirm-Action-Request" : Return GetType(cheque_action)
Case "FX-Transfer-Request" : Return GetType(cheque_action)
Case "Mobile-Banking-Request" : Return GetType(mobile_banking_request)
Case "SMS-Alerts-Request" : Return GetType(sms_alert_request)
End Select
Return Nothing
End Function
End Class
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim d = Request.Form("payload")
Dim r = JsonConvert.DeserializeObject(Of request)(d)
** this line fails: **
Dim p = JsonConvert.DeserializeObject(Of DB.ResolveType(r.req_type))(r.data)
DB.new_request(r.req_type, r.src, r.data)
Catch ex As Exception
End Try
End Sub
您不能使用那样的泛型。如果你有一个通用的方法,你必须提供一个在编译时已知的常量定义类型。在你的例子中,你尝试提供一个在运行时动态解析的类型,这是不可能的。 –
@AlexB。什么是实现这个或类似的首选方法。我想动态确定jsonDecode的类型。我有字符串,我可以查找以确定应用哪种解码(类)。 –
只需使用DeserializeObject的其他重载,如'JsonConvert.DeserializeObject(r.data,DB.ResolveType(r.req_type))' –