XmlDocument忽略了只读属性

时间:2016-09-02 10:22:41

标签: c# xml xmldocument

我有一个带有一些属性的模型:

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

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

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

我从这个模型生成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似乎没有读取我的只读属性。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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