This is something I wrote for an application I’m developing. This is an implementation of INotifyPropertyChanged that requires no backing fields, just call Set(value) or Get(). Internally it uses a dictionary to store the state and even reuses ChangedEventArgs
The source code can be found at:
https://github.com/ebalynn/StatefulViewModel/
Here is the extract from the ViewModel class that does all the heavy lifting: