У меня есть пара небольших классов для представления частей в поисковом фильтре. Если искомое значение равно NonValue
, фильтр должен ничего не делать. Это определено в базовом классе:
Private Class BaseFilter
Protected NonValue As Object
Protected sQueryStringBase As String = "AND {0} {1} {2} "
Public Sub CheckNonValue(ByVal QueryItem As Object)
'No Query if Item not valid
If Me.NonValue.Equals(Me.QueryItem) Then
Me.sQueryStringBase = String.Empty
End If
End Sub
End Class
BaseFilter
затем расширяется для различных типов полей:
Private Class StringFilter
Inherits BaseFilter
Protected Shadows NonValue As String = String.Empty
End Class
Когда я создаю StringFilter и проверяю допустимое значение:
Dim stf As New StringFilter()
stf.CheckNonValue(MyString)
Я получаю исключение NullReferenceException (NonValue = Nothing)
, когда ожидал, что объектом NonValue будет String.Empty. Это ошибка в моем коде, или я пытаюсь достичь полиморфизма неправильно? Спасибо.