ScriptableObject : Serialized Polymorphism Classes Can Not be Deserialize with Polymorphism

I make ScriptableObject to use local Database.
It includes lists of “Skill”.
Skills are inherited from SkillBase class.
And effect of Skill is written in override method.

Then, I added inherited Skill classes to List , and deserialize it in Game.
However, it’s effect does not act.

I guess ScriptableObject cannot deserialize with Polymorphism.
How shuold I do.

DataTable.cs

 public class DataTable : ScriptableObject
    {
    	public List<SkillBase> SkillTable = new List<SkillBase> ();
    }

SkillBase.cs

[System.Serializable]
public class SkillBase
{
    public virtual void SkillExecute ()
	{
		

	}
}

[System.Serializable]
public class Skill1 : SkillBase 
{
	public override void SkillExecute ()
	{
		

	}
}

[System.Serializable]
public class Skill2 : SkillBase 
{
	public override void SkillExecute ()
	{
		

	}
}

Do this:

public class SkillBase : ScriptableObject

Then create instances of skills in your project via the CreateAssetMenuAttribute. Now polymorphism works.