我有一个带有一些属性的模型:
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
似乎没有读取我的只读属性。如何解决这个问题?
答案 0 :(得分:1)
XMLSerializer不会序列化只读属性。这是一个限制。 但是你应该序列化字段" title"无论如何。为此,您可以使用DataContractSerializer。它功能更强大,允许序列化您在getter中使用的字段。