가상 속성이있는 기본 클래스와 가상 속성을 재정의하는 파생 된 형식이 있습니다. 형식을 XML로 serialize 할 수 있습니다. 내가 뭘 하려는지 개체가 파생 된 유형의 경우 항목 속성 목록을 유지하지 않는 것입니다. 이를 달성하기 위해 파생 클래스는 [XmlIgnore]
특성으로 재정의 된 속성을 꾸며냅니다. 기본 클래스의 가상 속성은 XmlIgnore
특성을 적용하지 않습니다. 개체가 파생 형식 (DynamicCart
) 일 때도 항목 목록이 어떤 이유로 직렬화됩니다..NET의 XmlSerializer를 사용할 때 파생 클래스의 속성을 무시합니다.
기본 클래스의 가상 속성에 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>);
}
질문에 대한 답변을 본 것으로 보입니다. –
나는 주위의 해결 방법을 구현했지만 내 질문에 대한 대답이 아니며 XMLSerializer는 Serive 클래스의 [XMLIgnore] 특성을 따르지 않고 DynamicCart를 serialize 할 때 List 개체를 포함합니까? –
Ken