拥有以下课程(.Net 3.5):
public class Something
{
public string Text {get; private set;}
private Something()
{
Text = string.Empty;
}
public Something(string text)
{
Text = text;
}
}
此序列化没有错误,但生成的XML不包含Text属性,因为它没有公共setter。
有没有办法(更简单,更好)让XmlSerializer包含这些属性?
答案 0 :(得分:4)
XmlSerializer
只关心公共读/写成员。一种选择是实施IXmlSerializable
,但这是很多的工作。更实用的选择(如果可用且合适)可以使用DataContractSerializer
:
[DataContract]
public class Something
{
[DataMember]
public string Text {get; private set;}
private Something()
{
Text = string.Empty;
}
public Something(string text)
{
Text = text;
}
}
这适用于公共成员和私有成员,但生成的xml不完全相同,并且您无法指定xml属性。
答案 1 :(得分:0)
没有。 XML序列化只会序列化公共读/写字段和对象的属性。
答案 2 :(得分:-1)
Try[Serializable] public class Something { ... }