Ho una classe base con una proprietà virtuale e un tipo derivato che sostituisce la proprietà virtuale. Il tipo può essere serializzato in XML. Quello che sto cercando di fare NON è mantenere la proprietà Elenco di oggetti quando l'oggetto è del tipo derivato. Per ottenere ciò, la classe derivata decora la proprietà sostituita con l'attributo [XmlIgnore]
. La proprietà virtuale nella classe base NON applica l'attributo XmlIgnore
. Per qualche motivo l'Elenco degli elementi viene serializzato ogni anche quando l'oggetto è del tipo derivato (DynamicCart
).Ignorare le proprietà sulle classi derivate quando si utilizza .NET XmlSerializer
Quando si applica l'attributo XmlIgnore
alla proprietà virtuale nella classe base, l'elenco non viene serializzato su file.
public class ShoppingCart
{
public virtual List<items> Items{get; set;}
//and other properties
public void SerializeToXML (string filePath)
{
var xmlSerializer = new XmlSerializer(this.GetType());
textWriter = new System.IO.StreamWriter(filePath);
xmlSerializer.Serialize(textWriter, this);
textWriter.Flush();
textWriter.Close();
}
}
//A cart that is populated by algo based on parameters supplied by user. I have no need to
//persist the actual items across sessions.
class DynamicCart: ShoppingCart
{
[XmlIgnore]
public override List<items>{get;set;}
//and other properties
}
class Shop
{
ShoppingCart cart = new DynamicCart();
PopulateCart(cart);
cart.serializeToXML(<PATH TO FILE>);
}
Sembra che tu abbia risposto tu stesso alla domanda. –
Ho implementato un work around ma non una risposta alla mia domanda, perché XMLSerializer non onora l'attributo [XMLIgnore] nella classe serivata e include l'oggetto List quando serializzo DynamicCart? –
Ken