XmlSerialize uma coleção personalizada com um atributo

Eu tenho uma classe simples que herda de Collection e adiciona algumas propriedades. Preciso serializar essa classe para XML, mas o XMLSerializer ignora minhas propriedades adicionais.

Suponho que isso se deva ao tratamento especial que o XMLSerializer fornece aos objetos ICollection e IEnumerable. Qual é a melhor maneira de contornar isso?

Aqui está um exemplo de código:

using System.Collections.ObjectModel;
using System.IO;
using System.Xml.Serialization;

namespace SerialiseCollection
{
    class Program
    {
        static void Main(string[] args)
        {
            var c = new MyCollection();
            c.Add("Hello");
            c.Add("Goodbye");

            var serializer = new XmlSerializer(typeof(MyCollection));
            using (var writer = new StreamWriter("test.xml"))
                serializer.Serialize(writer, c);
        }
    }

    [XmlRoot("MyCollection")]
    public class MyCollection : Collection<string>
    {
        [XmlAttribute()]
        public string MyAttribute { get; set; }

        public MyCollection()
        {
            this.MyAttribute = "SerializeThis";
        }
    }
}

Isso gera o seguinte XML (observe que MyAttribute está ausente no elemento MyCollection):

<?xml version="1.0" encoding="utf-8"?>
<MyCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <string>Hello</string>
    <string>Goodbye</string>
</MyCollection>

O que euquer é

<MyCollection MyAttribute="SerializeThis" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <string>Hello</string>
    <string>Goodbye</string>
</MyCollection>

Alguma ideia? Quanto mais simples, melhor. Obrigado.

questionAnswers(5)

yourAnswerToTheQuestion