我有这个方法:
Private Sub SetIfNotNull(ByVal input As Object, ByRef destination As Object, ByVal ConversionType As ConversionType)
If input IsNot Nothing AndAlso input <> "" Then
Select Case ConversionType
Case DealerTrackConnection.ConversionType._String
destination = input
Case DealerTrackConnection.ConversionType._Integer
destination = Convert.ToInt32(input)
Case DealerTrackConnection.ConversionType._Double
destination = Convert.ToDouble(input)
Case DealerTrackConnection.ConversionType._Date
destination = Convert.ToDateTime(input)
Case DealerTrackConnection.ConversionType._Decimal
destination = Convert.ToDecimal(input)
End Select
End If
End Sub
这是一次失败的电话:
SetIfNotNull(ApplicantElement.Element("suffix").Value, NewApplicant.Suffix, ConversionType._String)
如果XML文件中的元素为空(没有标记),则方法调用失败。但我无所事事。为什么这样做以及如何修改代码以便每次都修复它。
答案 0 :(得分:2)
问题不在您的SetIfNotNull
方法中,而是在这段代码中:ApplicantElement.Element("suffix").Value
该元素为空,因此Value
调用会抛出NullReferenceException
。试试这个:
CType(ApplicantElement.Element("suffix"), String)
此外,您可以合并此行中的支票:
If input IsNot Nothing AndAlso input <> "" Then
进入这个:
If Not String.IsNullOrEmpty(input) Then
答案 1 :(得分:0)
申请人Element.Element(“后缀”)似乎什么都没有,因此在调用方法之前会发生异常,不是吗?
If Not ApplicantElement.Element("suffix") Is Nothing Then
SetIfNotNull(ApplicantElement.Element("suffix").Value, NewApplicant.Suffix, ConversionType._String)
End If