您的位置:首页 > 编程语言 > C#

C# 序列化 只读属性

2015-08-03 11:41 316 查看
在直接序列化只读属性的时候,由于该属性没有 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 在语法上讲,不能完全称作只读,但可以屏蔽用户的设置;

这样,DiffAge 就可以被序列化以及反序列化了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: