在直接序列化只读属性的时候,由于该属性没有 setter ,在反序列化时无法给其赋值,所以该属性将不被序列化(个人理解);
而且,如果序列化的目的如果只是保存,反序列化之后只读属性的值可以通过 get 里面的代码自动获得,序列化也没有意义;
但如果目的是传输给其它程序,可能就不一定了(我目前接触到的一个项目就有这个需求,要将一些属性值保存,但这些属性只在代码中适合用只读的方式获取),
总之,我们要序列化只读属性
废话了那么多,不能序列化的原因就是没有setter,那,加一个空的setter就可以了……
就这么简单(之前还想了好久 (。﹏。*) )
实现如下:
[XmlElement("MinAge")]
public int MinAge { get; set; }
[XmlElement("MaxAge")]
public int MaxAge { get; set; }
[XmlElement("DiffAge")]
public int DiffAge {
get
{
return MaxAge - MinAge;
}
set { }
}
这样,DiffAge 就可以被序列化以及反序列化了。