C# 序列化 只读属性
2015-08-03 11:41
316 查看
在直接序列化只读属性的时候,由于该属性没有 setter ,在反序列化时无法给其赋值,所以该属性将不被序列化(个人理解);
而且,如果序列化的目的如果只是保存,反序列化之后只读属性的值可以通过 get 里面的代码自动获得,序列化也没有意义;
但如果目的是传输给其它程序,可能就不一定了(我目前接触到的一个项目就有这个需求,要将一些属性值保存,但这些属性只在代码中适合用只读的方式获取),
总之,我们要序列化只读属性
废话了那么多,不能序列化的原因就是没有setter,那,加一个空的setter就可以了……
就这么简单(之前还想了好久 (。﹏。*) )
实现如下:
以上代码中,DiffAge 在语法上讲,不能完全称作只读,但可以屏蔽用户的设置;
这样,DiffAge 就可以被序列化以及反序列化了。
而且,如果序列化的目的如果只是保存,反序列化之后只读属性的值可以通过 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 就可以被序列化以及反序列化了。
相关文章推荐
- C#创建一个polygon类
- C# 模拟from表单提交webservice
- C#匿名类的使用
- C#高级编程六十四天----并行扩展
- C#获取进程的主窗口句柄的实现方法
- C# winform键盘钩子
- C#如何自动选择出系统中最合适的IP地址
- C#将字节数组加到List中
- C#读取数组中的指定长度
- C#中的 SET ,GET
- C# 冒泡排序
- C#在获取当前方法名、类名
- 扩展方法为我们带来了什么
- C# StopWatch 类
- C#中WebClient使用DownloadString中文乱码的解决办法
- c#的DateTime.Now函数详解
- c#读写excel
- c#群发短信
- C#脚本引擎 CS-Script 之(一)——初识
- C# Hadoop学习笔记(一)