【问题标题】:What is the VB.Net equavilent of the following下面的 VB.Net 等价物是什么
【发布时间】:2017-07-27 13:31:20
【问题描述】:

我需要将以下内容转换为 VB.Net。我尝试了在线转换器,但转换出错

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)

【问题讨论】:

  • 错误信息呢?
  • ErrorContext 类的一部分
  • 更新了描述
  • 错误信息的文本会很有用。

标签: c# vb.net delegates


【解决方案1】:

与生成的代码非常相似,但有一些变化。我不知道生成器对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

【讨论】:

  • 嗯...关闭。但是参数现在是个问题
  • 你怎么知道的?什么是错误信息?任何看到这个问题的人都会想知道同样的事情,而在你发布之前,你会一直被否决。
  • 如果我的代码和你的完全一样,那么我必须生成一个函数:Private Function HandleDeserializationError() As EventHandler(Of ErrorEventArgs)
  • 错误是:参数未指定参数发送者,参数未指定参数ErrorArgs
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2011-05-23
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多