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:
This is a simple code sample for you:
Public Class DoubleAssignedEventArgs
Friend Sub New(oldValue As Double, newValue As Double)
Me.OldValue = oldValue
Me.NewValue = newValue
Public Property OldValue() As Double
m_OldValue = Value
Private m_OldValue As Double
Public Property NewValue() As Double
m_NewValue = Value
Private m_NewValue As Double
Public Class MyClass
Public DoubleValueModified As EventHandler(Of DoubleAssignedEventArgs)
Public Property DoubleValue() As Double
Dim oldValue As Double = doubleValueField
If value = oldValue Then
doubleValueField = value
If DoubleValueModified IsNot Nothing Then
New DoubleAssignedEventArgs(oldValue, value))
Private doubleValueField As Double
I hope it's clear.