У меня есть общий класс следующим образом (Value
это Public
только для простоты, на самом деле, все это заключено в свойства):
Public MustInherit Class GenericInterval(Of T As {Structure, IComparable})
Public Value As T
End Class
Я хочу реализовать IComparable(Of T)
:
Public MustInherit Class GenericInterval(Of T As {Structure, IComparable})
Implements IComparable(Of T)
Public Value As T
Public Function CompareTo(Other As T) As Int32 Implements IComparable(Of T).CompareTo
Return Value.CompareTo(Other)
End Function
End Class
Но действительно ли это правильно? Это выглядит несколько «несоответствующим», как если бы я сравнивал значение с универсальным типом.
В тестовом модуле я создаю 2 переменные и присваиваю им значения.
Dim lTest1 As New GenericInterval()
Dim lTest2 As New GenericInterval()
lTest1.Value = 4
lTest2.Value = 5
Теперь я ожидаю сравнить lTest1
с lTest2
. Однако мне нужно выполнить тест на извлеченном Value
:
If lTest1.CompareTo(lTest2.Value) >= 0 Then
End If
Но, сделав это, я мог бы просто использовать
If lTest1.Value >= lTest2.Value Then ...
полное исключение интерфейса.
Разве не было бы выгодно разрешить мне доступ к Value
уже в универсальном CompareTo
, например:
Return Value.CompareTo(Other.Value)
Однако Value
не является доступным членом в общем.
Я что-то здесь пропускаю или это недоступно по замыслу? Если да, то какова цель?