.Net XmlSerializer: désérialiser CDATA être intérieure du texte

J'ai un problème avec CDATA désérialisation en utilisant la norme .Net XmlSerializer.

Mise à jour: - je obtenir XML à partir d'un système externe et je ne peux pas influencer son format donc je ne peux pas faire CData être inclus dans un Élément séparé de l'Attribut.

Sérialisation donne ça:

<?xml version="1.0" encoding="utf-16"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><![CDATA[Hello, world!]]></MyClass>

Désérialisation ne pas restaurer l'objet à son état d'origine.

Voici la classe qui est en train d'être sérialisé:

public class MyClass
{
    string _data;

    [XmlIgnore]
    public string Data
    {
        get { return _data; }
        set { _data = value; }
    }

    [XmlAnyElement]
    public XmlCDataSection CData
    {
        get { return new XmlDataDocument().CreateCDataSection(Data); }
        set { Data = value.Value; }
    }
}

Voici le test qui échoue:

[Test]
public void CData_as_inner_text_test()
{
    MyClass item = new MyClass();

    item.Data = "Hello, world!";

    XmlSerializer serializer = new XmlSerializer(item.GetType());
    string serialized;

    using (StringWriter sw = new StringWriter())
    {
        serializer.Serialize(sw, item);
        serialized = sw.GetStringBuilder().ToString();
    }

    MyClass deserialized;

    using (StringReader sr = new StringReader(serialized))
    {
        deserialized = (MyClass)serializer.Deserialize(sr);
    }

    Assert.AreEqual(item.Data, deserialized.Data); //For some reason, deserialized.Data == null
}

J'ai trouvé le même problème ici, mais il n'y a pas de réponse:
XmlSerializer, XmlAnyElement et CDATA