XmlSerializer中比SGen更深遂的问题

传说中,.NET的XmlSerializer使用方便功能强,我们一直用它。只不过,它需要在运行时编译出一个或多个专门用来解析XML的DLL。为了免除这部分运行时编译开销,便诞生了SGen,用来预先生成解析的DLL。

但是,这里有几个没有说清楚的问题。首先,我们是不需要去手工引用并使用生成的*.XmlSerializer.DLL的。只要把它放在程序目录里,不需要修改原有代码,XmlSerializer在构造时会自动去寻找它是否存在。存在则加载,否则按原先的方式编译临时DLL。

其次,这个序列化DLL不是总能被使用。事实上,只有使用XmlSerializer的ctor(), ctor(Type), ctor(Type, string)这三个构造函数时,预生成的DLL才可以使用。而且对ctor(Type, string)的形式,第二个参数namespace必须和SGen所使用的namespace一致。对于其他构造函数,不但不能使用预生成的DLL,而且会每次构造时都重新生成一个新的DLL,即使构造参数完全相同。所以,这些复杂构造函数很邪恶,一般尽量避免。

最后,比较不爽的是,SGen缺省会把所有可能序列化的类型都处理了……有点浪费。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值