必须填写至少10个字的日志
nnhy 编写于 2012-07-27 18:48:21
X
2011-05-03
已经确定,序列化框架的处理顺序为:
IAccessor接口 => OnObjectWriting事件 => 扩展类型 => 基础类型 => 字典 => 枚举 => 序列化接口 => 自定义对象 => 未知类型 => OnObjectWrited事件


2011-04-16
关于自定义的方式,有好几种:
1,重载某个实现了接口的基类的方法。这是之前二进制序列化实现的方式,最大的弊端就是必须继承某个基类,大大限制了应用。
2,Xml序列化用的是特性,序列化之前穿入各种用于控制的特性。但是这样的自定义控制性很差,很多东西都不能做。
3,.Net二进制序列化用的是接口,要求目标成员实现指定接口。思路是好的,但是要求用户完整控制整个对象的序列化,而很多时候,我们只想控制部分成员而已



2011-04-14
1,可以考虑兼容ISerializable接口,它实际上就是要求实现该接口的类,把所需要序列化的名值写入到SerializationInfo中,写入器只需要写入这些数据,即可代码写入该对象。因为.Net里面很多常用的类都实现了ISerializable接口,所以可以非常方便的定制它们的序列化。
2,接口的另一个参数是StreamingContext,它有一个Object的成员Context,可以放置各种各样的值。
3,SerializationInfo有个GetEnumerator方法,返回的是SerializationInfoEnumerator枚举器,可以进行枚举取得要序列化的名值,元素类型是SerializationEntry
4,如果要兼容ISerializable接口,我们的框架可以这样子设计,第一步获取要序列化的成员和值,其实最好是获取得到MemberInfo和值,这样子就好序列化了