Отключить сериализацию для определенного свойства

#c# #serialization #xml-serialization

#c# #сериализация #xml-сериализация

Вопрос:

У меня есть класс object для сериализации XML

 [XmlType("PAYMENT")]
public class PaymentXML
{
    [XmlElement(ElementName = "REQUEST")]
    public RequestXML Request { get; set; }

    [XmlElement(ElementName = "META")]
    public MetaXML Request { get; set; }

    //Property that I dont want to be serialized
    public Subscriber Subscriber { get; set; }
}
  

сериализация

 var xml = new PaymentXML();

string path = HttpContext.Current.Server.MapPath(@_xmlResponseDir   _responsePath);

using (var sw = new StreamWriter(path))
{
    var ns = new XmlSerializerNamespaces();
    ns.Add("", "");

    var serializer = new XmlSerializer(typeof(PaymentXML), new XmlRootAttribute("XML"));

    serializer.Serialize(sw, xml, ns);
}
  

Проблема в том, что это также сериализует Subscriber свойство. Я только хочу, чтобы RequestXML и MetaXML были сериализованы в XML. Как я могу исключить Subscriber свойство в процессе сериализации?

Ответ №1:

Используйте атрибут [XmlIgnore]:

 // Property that I don't want to be serialized.
[XmlIgnore]
public Subscriber Subscriber { get; set; }
  

Ответ №2:

Добавьте атрибут XmlIgnore к этому свойству.