【问题标题】:Read-only property ignored by XmlDocumentXmlDocument 忽略的只读属性
【发布时间】:2016-09-02 10:22:40
【问题描述】:

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

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

【问题讨论】:

    标签: c# xml xmldocument


    【解决方案1】:

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

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

    【讨论】:

    • DataContractSerializer 是否需要对我的代码进行任何更改?
    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2010-10-30
    相关资源
    最近更新 更多