How can I detect an Asset been deleted in Editor by script?

I’m writing a external editor in Unity3D. My asset is inherit from ScriptableObject, and I want to do something when the asset deleted by user through Project Window.

So I first try to write code in ScriptableObject::OnDestroy(), but nothing happend. I read from some others’ advice that you should put [ExecuteInEditMode()] to make these OnXXXX function available in Editor. Unfortunately it still not work.

So how can I detect an Asset deleted by user in editor?

I think I found the answer. You can use AssetPostProcessor::OnPostprocessAllAssets, there have a parameter _deletedAssets in string which give you the deleted assets.