2016-09-02 1 views
0

Ich habe ein Modell mit einigen Eigenschaften:Read-only von XmlDocument ignoriert Eigenschaft

public class Invoice 
{ 
    public string InvoiceNumber { get; set; } 

    [NotMapped] 
    public string Title 
    { 
     get 
     { 
      string title = ""; 
      //some algorithm 
      return title; 
     } 
    } 
} 

Mein Modell hat zwei Eigenschaften: Einer von ihnen ist schreibgeschützt (Titel), wie es programmatisch erzeugt wird.

Ich bin ein XMLDocument von diesem Modell (generischer Ansatz) zu erzeugen:

private XmlDocument GenerateXmlDocument() 
{ 
    XmlDocument xmlDocument = new XmlDocument(); 
    XmlSerializer xmlSerializer = new XmlSerializer(_objectToSerialize.GetType()); 
    using (MemoryStream xmlStream = new MemoryStream()) 
    { 
     xmlSerializer.Serialize(xmlStream, _objectToSerialize); 
     xmlStream.Position = 0; 
     xmlDocument.Load(xmlStream); 
    } 

    //Set namespace 
    xmlDocument.DocumentElement.SetAttribute("xmlns", XmlNamespace); 

    return xmlDocument; 
} 

aber es ist meine schreibgeschützte scheint Eigenschaft nicht von GenerateXmlDocument gelesen wird. Wie kann ich dieses Problem lösen?

Antwort

0

Der XMLSerializer wird schreibgeschützte Eigenschaften nicht serialisieren. Dies ist eine Einschränkung. Allerdings sollten Sie das Feld "title" trotzdem serialisieren. Zu diesem Zweck können Sie den DataContractSerializer verwenden. Es ist leistungsfähiger und erlaubt die Serialisierung der Felder, die Sie in Ihrem Getter verwenden.

See: https://msdn.microsoft.com/en-us/library/mt693218.aspx

+0

Wird die DataContractSerializer müssen alle Änderungen in meinem Code? – mosquito87

+0

@ moskito87 ja! – Xeun

Verwandte Themen