Как реализовать сериализацию Xml с унаследованными классами в C #

У меня есть два класса: базовый класс имени компонента и наследующий класс с именем DBComponent}

[Serializable]
public class Component
{
    private string name = string.Empty;
    private string description = string.Empty;  
}

[Serializable]
public class DBComponent : Component
{
    private List spFiles = new List();

    // Storage Procedure Files
    [XmlArrayItem("SPFile", typeof(string))]
    [XmlArray("SPFiles")]
    public List SPFiles
    {
        get { return spFiles; }
        set { spFiles = value; }
    }

    public DBComponent(string name, string description)
        : base(name, description)
    { }
}  

[Serializable]
public class ComponentsCollection
{
  private static ComponentsCollection instance = null;
  private List components = new List();

  public List Components
  {
      get { return components; }
      set 
      { 
            components = value; 
      }
  }

   public static ComponentsCollection GetInstance()
    {
        if (ccuInstance == null)
        {
            lock (lockObject)
            {
                if (instance == null)
                    PopulateComponents();
            }
        }
        return instance;
    }

    private static void PopulateComponents()
    {
        instance = new CCUniverse();
        XmlSerializer xs = new XmlSerializer(instance.GetType());
        instance = xs.Deserialize(XmlReader.Create("Components.xml")) as ComponentsCollection;
    }
}

Я хочу читать \ писать из файла XML. Я знаю, что мне нужно реализовать класс Serialization for DBComponent, иначе он не будет его читать. Но я не могу найти для этого ни одной простой статьи. все статьи, которые я нашел, были слишком сложными для этого простого сценария.

XML-файл выглядит так:


      
    
            
                    
                        Setup\TenantHistoricalSP.sql
                    
            
            
          
  

Может кто-нибудь дать мне простой пример того, как читать этот вид XML-файла и что должно быть реализовано?

Спасибо

Лиор

Ответы на вопрос(3)

Ваш ответ на вопрос