在.NET中使用第三方API。他们的API没有很好地处理DBNull,所以我创建了一个名为" SetStringValue"的小辅助函数。看起来像这样:
Public Sub SetStringField(ByRef _DestinationField As Object, ByVal _Value As Object)
If Not TypeOf _Value Is DBNull Then
_DestinationField = _Value
End If
End Sub
在我的主要代码中,我有这样的一行:
SetStringField(SomeAPIObject.Fields(SOME_FIELD_ENUM), DataRow.Item("SourceValue"))
如果您在访问DBNull时遵循代码流,它将永远不会运行该行:
_DestinationField = _Value
然而," SomeAPIObject"虽然我从未这样做过,但据报道这个领域已经确定并且很脏。它就像.NET一样用原始值设置传递的参数,因为我将它作为参考传递。
这是预期的吗?有什么办法可以避免吗?
答案 0 :(得分:2)
可能是apiObject.Fields(...)
召唤是什么让你的物体变成脏,脏,脏,脏,肮脏的物体?
重写你的功能:
Public Sub SetStringField(o as Øbject, e as Enüm, v As Øbject)
If Not TypeOf v Is DBNull Then
o.Fields(e) = v
End If
End Sub
然后称之为:
SetStringField(SomeAPIObject, SOME_FIELD_ENUM, DataRow.Item("SourceValue"))
或者一些垃圾。更多变形虫。