Read-only 属性 被 XmlDocument 忽略

Read-only property ignored by XmlDocument

我有一个具有某些属性的模型:

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

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

我的模型有两个属性:其中之一是 read-only(标题),因为它是以编程方式生成的。

我正在从这个模型中生成一个 XMLDocument(通用方法):

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;
}

但是 GenerateXmlDocument 似乎没有阅读我的 read-only 属性。如何解决这个问题?

XMLSerializer 不会序列化只读属性。这是一个限制。 但是无论如何你都应该序列化字段 "title" 。为此,您可以使用 DataContractSerializer。它更强大,允许序列化您在 getter.

中使用的字段

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