How do I get an editable component with NewObject()?

I have a TArray of what used to be USTRUCT variables. I’d add new array elements using array.Add(FElement()), and the properties of those elements would be exposed to the editor.

For many reasons I have decided to change the struct into a class derived from UObject. Now to add new elements, I would need to call array.Add(NewObject()) and make the array store pointers instead of objects. However, because of this, I can no longer change the properties inside those elements in the editor (and I can no longer easily just add a new element).

How can I have an array of UObject pointers with exposed properties in the editor?

Edit Just realized that they are actually editable as generic assets. Is there any way to lay out the properties in the properties panel just like a struct, though?