ScriptableObject assets null on startup, then reappear?

So I have a ScriptableObject asset with a list of ScriptableObject sub-assets. I also have an EditorWindow which draws each sub-asset on the list. It works perfectly.

Until I close Unity. When I open Unity again, I can see all of the sub-asset names on the list in the inspector, but they’re missing their icons. When I use my EditorWindow, they are all null. But when I press play or import any scripts, suddenly all the sub-assets work perfectly again.

I’m afraid I don’t understand what’s going on here. Can someone explain why this happens, and what I need to do to have the sub-assets loaded when I select the main asset to edit?

Figured it out. Apparently they’ll load properly if each ScriptableObject has its own C# script with the same name as the object class itself. Bit of a pain to have so many separate scripts, but oh well.

So far it appears it’ll still work even if inside a namespace.