J'ai lu de nombreux articles sur les types connus et je crois que mon exemple devrait fonctionner. Mais ce n'est pas le cas. Je reçois l'exception suivante sur la désérialisation et je ne comprends pas pourquoi:DataContractSerializer, KnownType et l'héritage
Erreur dans la ligne 1 position 2. Attendant élément 'A' de l'espace de noms 'http://schemas.datacontract.org/2004/07/ConsoleApplication2' .. 'Element' rencontré avec le nom 'C', espace de noms 'http://schemas.datacontract.org/2004/07/ConsoleApplication2'.
using System;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;
namespace ConsoleApplication2
{
[DataContract][KnownType(typeof(C))]class A { }
[DataContract]class C : A { }
class Program
{
static void Main(string[] args)
{
A a = new C();
string data;
var serializer = new DataContractSerializer(a.GetType());
using (var sw = new StringWriter())
{
using (var xw = new XmlTextWriter(sw))
serializer.WriteObject(xw, a);
data = sw.ToString();
}
serializer = new DataContractSerializer(typeof(A));
using (var sr = new StringReader(data))
using (var xr = new XmlTextReader(sr))
a = (A)serializer.ReadObject(xr);
}
}
}
Que manque-t-il?
Merci beaucoup! Ça marche vraiment. – UserControl