У меня есть базовый класс с виртуальным свойством и производным типом, который переопределяет виртуальное свойство. Тип может быть сериализован в XML. То, что я пытаюсь сделать, это НЕ сохранять свойство List of items, когда объект имеет производный тип. Чтобы добиться этого, производный класс украшает переопределенное свойство атрибутом [XmlIgnore]
. Виртуальное свойство в базовом классе НЕ применяет атрибут XmlIgnore
. По какой-то причине список элементов сериализуется каждый раз, даже когда объект имеет производный тип (DynamicCart
).
Когда я применяю атрибут XmlIgnore
к виртуальному свойству в базовом классе, список не сериализуется в файл.
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>);
}