Detect when a property is changed on a ScriptableObject Asset

I have added a menu command that creates a new ScriptableObject and saves it as an asset. I have also created a MonoBehaviour that has my ScriptableObject as a property. I can add my behaviour to a game object and select my asset using the asset selector. My problem is that when I change a value on my asset, how does my behaviour detect the change and update accordingly?

You can use OnValidate() in ScriptableObjects, but Unity forgot to document it for some reason.