It looks like the title and the body of the question are different post.
Not only what is you say in the title is impossible, these words simply make no sense. Same goes to the combination of tags "inheritance", "types" and "override". "Override" is a central concept of OOP, it is only applicable to methods (including property getters/setters); and it also inapplicable (in .NET) to value types or their members.
As to the body of the question, this is, in contrast, not only possible, but trivial. I mean, you can do something like "Dim WithEvents dblTest as Double" (not exactly this way, of course). This is a simple combination of an event you should define in your class, and some double property. I hope you know how to define and invoke the events, or you can just read about it. Now, the property is something which looks exactly as the field for the code using it; it mimic reading and assignment syntax, but these operations can be backed with side effect. In your case, in particular, the side effect would be invocation of the event. In the event arguments, you can pass some data, such as old and new values of the properties at the moment of assignment.
All you need is this:
http://msdn.microsoft.com/en-us/library/ms172877.aspx[
^],
http://msdn.microsoft.com/en-us/library/bc3dtbky.aspx[
^].
[EDIT]
This is a simple code sample for you:
Public Class DoubleAssignedEventArgs
Inherits System.EventArgs
Friend Sub New(oldValue As Double, newValue As Double)
Me.OldValue = oldValue
Me.NewValue = newValue
End Sub
Public Property OldValue() As Double
Get
Return m_OldValue
End Get
Private Set
m_OldValue = Value
End Set
End Property
Private m_OldValue As Double
Public Property NewValue() As Double
Get
Return m_NewValue
End Get
Private Set
m_NewValue = Value
End Set
End Property
Private m_NewValue As Double
End Class
Public Class MyClass
Public DoubleValueModified As EventHandler(Of DoubleAssignedEventArgs)
Public Property DoubleValue() As Double
Get
Return doubleValueField
End Get
Set
Dim oldValue As Double = doubleValueField
If value = oldValue Then
Return
End If
doubleValueField = value
If DoubleValueModified IsNot Nothing Then
DoubleValueModified.Invoke(
Me,
New DoubleAssignedEventArgs(oldValue, value))
End If
End Set
End Property
Private doubleValueField As Double
End Class
I hope it's clear.
—SA