How do i use CustomPropertyDrawer for NonSerialized properties?

For example i have

public abstract class A{}
[Serializable]public class B : A{}
[Serializable]public class C : A{}
[Serializable]public class D : A{}

And some class with container

public class MyContainer : MonoBehaviour, ISerializationCallbackReceiver{
[NonSerialized]public List<A> myList;

public void OnBeforeSerialize() {
    //my serialization
public void OnAfterDeserialize() {
   //here i fill myList

So myList are filled with some abstract things and when unity serialize and deserialize this GameObject and this is abstract list anyway so it cant be serialized.

How do i draw this list in inspector in that case?
Or how do i use CustomPropertyDrawer in that case?

Sure i can create CustomEditor for MyContainer and implement drawing of that list there. But it will be huge mess.

Well. On the other thought. I can do what unity does. Don’t do abstract class, add bunch of values to A class, add enum that tells “i am this type” and write UI using switches.
But… ugh… when does unity implement serialization of abstract classes? it just pain.