You can write a custom generic delegate (plus for primitive types if you have to avoid autoboxing overhead) that takes as a parameter something that will notify observers, and use this delegate for all of your properties. Unfortunately, there's no way to enforce it on subclasses other than documentation