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.
中使用的字段
我有一个具有某些属性的模型:
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.
中使用的字段