2017-07-27 45 views
-6

我需要將以下內容轉換爲VB.Net。我嘗試在線轉換器和轉換給出錯誤什麼是以下的VB.Net equavilent

var result = JsonConvert.DeserializeObject<T>(parsed["result"].ToString(), 
        new JsonSerializerSettings 
        { 
         /* 
         * Because Aliexpress Api logic is very weird - 
         * it could return "-" for totalResults field, 
         * Which is Integer by documentation and common sense 
         */ 
         Error = HandleDeserializationError 
        }); 

protected void HandleDeserializationError(object sender, ErrorEventArgs errorArgs) 
     { 
      var currentError = errorArgs.ErrorContext.Error.Message; 
      errorArgs.ErrorContext.Handled = true; 
     } 

轉換後的代碼給出

Dim result = JsonConvert.DeserializeObject(Of T)(parsed("result").ToString(), New JsonSerializerSettings() With { _ 
    Key .[Error] = HandleDeserializationError _ 
}) 

Protected Sub HandleDeserializationError(sender As Object, errorArgs As ErrorEventArgs) 
    Dim currentError = errorArgs.ErrorContext.[Error].Message 
    errorArgs.ErrorContext.Handled = True 
End Sub 

的ErrorEventArgs類定義爲

Public Class ErrorEventArgs 
     Inherits EventArgs 

     Public Sub New(currentObject As Object, errorContext As ErrorContext) 

     Public ReadOnly Property CurrentObject As Object 
     Public ReadOnly Property ErrorContext As ErrorContext 
    End Class 

基本上我有轉換後的過程:

Protected Sub HandleDeserializationError(sender As Object, errorArgs As ErrorEventArgs) 
      Dim currentError As String = errorArgs.ErrorContext.[Error].Message 
      errorArgs.ErrorContext.Handled = True 
     End Sub 

,我需要把它分配爲事件處理

喜歡的東西

Dim s As JsonSerializerSettings = New JsonSerializerSettings() 
       s.Error = HandleDeserializationError() 
       Dim result = JsonConvert.DeserializeObject(Of T)(parsed("result").ToString(), s) 
+2

和錯誤消息? –

+0

ErrorContext類的一部分 – Eminem

+0

更新了描述 – Eminem

回答

2

非常相似,所生成的代碼,但也有一些變化。我不知道Key發電機在做什麼,我不認爲在這種情況下必須包含Error關鍵字。

Dim Result = JsonConvert.DeserializeObject(OF T)(parsed("result").ToString(), _ 
       New JsonSerializerSettings With { .Error = AddressOf HandleDeserializationError}) 


Protected Sub HandleDeserializationError(sender As Object, ErrorArgs As EventArgs) 
    'The first line in this method didn't do anything 
    errorArgs.ErrorContext.Handled = True 
End Sub 
+0

嗯...關閉。但參數現在是個問題 – Eminem

+0

你怎麼知道這個?什麼是錯誤消息?任何看到這個問題的人都會想知道同樣的事情,並且直到你發佈它,你纔會繼續得到低估。 –

+0

如果我的代碼完全符合您的要求,那麼我必須生成一個函數:Private Function HandleDeserializationError()As EventHandler(Of ErrorEventArgs) – Eminem