請問如何使用函數返回的類型定義?如何使用從函數返回的類型定義?
下面的函數編譯,但我得到: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))' –