什麼是最簡單的/清潔/處理在以下情況下,一個強類型DataSet中的空值最容易/最好的方法:問題的一個強類型DataSet的繼承和NullValue屬性
- 一個基類有一個可空通過它的構造函數設置的值
- 派生類的構造函數具有強類型DataSet Row作爲參數,並且在訪問空值時拋出異常。
這裏是一個簡化的例子來演示我面臨的問題。任何與你的代碼相似的東西純屬巧合。
Public MustInherit Class BaseClass
Private _Number as Nullable(of integer)
Public Sub New(Number as Nullable(of integer))
_Number = Number
End Sub
End Class
Public Class DerivedClass
Inherits BaseClass
'Throw System.Data.StrongTypingException "The value for column 'Number'
'in table 'SomeData' is DBNull." when Number is null
Public Sub New(DataRow as my DataDLL.SomeDataRow)
MyBase.New(DataRow.Number)
End Sub
'First statement of this 'Sub New' must be a call to 'MyBase.New'
'or 'MyClass.New' because base class 'BaseClass' of 'DerivedClass'
'does not have an accessible 'Sub New' that can be called with no arguments
Public Sub New(DataRow as my DataDLL.SomeDataRow)
If TermRow.IsNumberNull() Then
MyBase.New(Nothing)
Else
MyBase.New(DataRow.Number)
End If
End Sub
'Also Throw System.Data.StrongTypingException because As part of preparing
'the argument list for the call to IIf, the Visual Basic compiler calls
'every function in every expression.
Public Sub New(DataRow As MyData)
MyBase.New(DirectCast(IIf(DataRow.IsNumberNull(), _
Nothing, _
TermRow.Number), Nullable(Of Integer)))
End Sub
End Class
我把3 Public Sub New
只顯示3個替代我考慮。
什麼是第一個構造函數拋出的異常?第二個,就像它說它必須是第一行,所以你必須弄清楚如何把所有的邏輯放在一條線上。 VB很有趣! – Jay