Compte tenu de ce codeDataContractSerializer avec abstraite (base)/béton (héritant) des classes
public override void Serialize(BaseContentObject obj)
{
string file = ObjectDataStoreFolder + obj.Slug + ".xml";
if(obj.GetType() == typeof(Page))
{
DataContractSerializer dcs = new DataContractSerializer(typeof Page));
XmlDictionaryWriter myWriter =
XmlDictionaryWriter.CreateTextWriter(new FileStream(file, ileMode.CreateNew, FileAccess.Write),
Encoding.UTF8);
dcs.WriteObject(myWriter, obj);
myWriter.Close();
}
else if(obj.GetType() == typeof(Image))
{
DataContractSerializer dcs = new DataContractSerializer(typeof Image));
...
...
}
}
est-il un moyen de faire quelque chose comme ça
DataContractSerializer dcs = new DataContractSerializer(obj.GetType());
// this fails however, compiler error
et se débarrasser de ces instructions if() au dessus? Le constructeur de DataContractSerializer s'attend à ce que Type ou Namespace, mais il ne fonctionne pas avec obj.GetType().
Ma hiérarchie de classes est la suivante:
BaseContentClass (résumé)
page (béton, BaseContentClass hérite)
image (béton, BaseContentClass hérite)
...
?
Je viens de l'essayer de nouveau dans un autre endroit et cela fonctionne vraiment, donc je ne comprends vraiment pas où mon erreur est venue avant. Merci! – mare