Use C# interfaces within Unity!
With this package you can create interface fields for your MonoBehaviour or ScriptableObject scripts and be able to set them to any serialized object that implements your interface from within the editor - just drag and drop like any regular Unity object or select your implementation from a list!
It is fully serialized and integrated into Unity and includes it's own property drawer and selection window that shows all objects and components that implement the interface.
No need for you to create custom editors or property drawers, it all happens automatically!