XmlSerializer中比SGen更深遂的问题
来源:互联网 发布:java action 编辑:程序博客网 时间:2024/04/27 19:00
传说中,.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缺省会把所有可能序列化的类型都处理了……有点浪费。
但是,这里有几个没有说清楚的问题。首先,我们是不需要去手工引用并使用生成的*.XmlSerializer.DLL的。只要把它放在程序目录里,不需要修改原有代码,XmlSerializer在构造时会自动去寻找它是否存在。存在则加载,否则按原先的方式编译临时DLL。
其次,这个序列化DLL不是总能被使用。事实上,只有使用XmlSerializer的ctor(), ctor(Type), ctor(Type, string)这三个构造函数时,预生成的DLL才可以使用。而且对ctor(Type, string)的形式,第二个参数namespace必须和SGen所使用的namespace一致。对于其他构造函数,不但不能使用预生成的DLL,而且会每次构造时都重新生成一个新的DLL,即使构造参数完全相同。所以,这些复杂构造函数很邪恶,一般尽量避免。
最后,比较不爽的是,SGen缺省会把所有可能序列化的类型都处理了……有点浪费。
- XmlSerializer中比SGen更深遂的问题
- mono中XmlSerializer的问题
- 使用XmlSerializer的问题
- 对于hash的比之前更深的理解
- JNI 比hallo world更深一步的hallo JNI
- socket中accept函数的更深理解
- XmlSerializer带来的性能问题及解决办法
- XmlSerializer 构造函数的性能问题
- Sgen.exe: Speed up XmlSerializer's Startup Performance [.NET 2.0, XML Serialization]
- 更深层的反射
- AsynTask更深的理解
- SGEN全编译过程中ST22中出现dump:GEN_FRAGVIEW_EMPTY
- XmlSerializer 类的使用
- XmlSerializer的几个用法
- 【经验谈】XmlSerializer的坑
- XmlSerializer的使用
- 如何解决用XmlSerializer序列化和反序列化一个类, 保存到UTF-8的XML中. 产生的换行符丢失的问题
- 技术,继续,更深入的
- 2008.5.12 14:28 举国志哀
- 网站http://live.heroku.com功能已完善
- 外部链接查询
- webconfig配置
- webconfig配置
- XmlSerializer中比SGen更深遂的问题
- 如何进行EJB的压力测试
- mysql导入数据库文件最大限制的修改
- 页面部分刷新方法IFrame以及向iframe里面传参.
- 第二十一課 文法
- ofstream/ifstream 文本/二进制 方式 读入/写出 数据方法
- Attribute在C#中如何操作
- 获取一个范围内的随机数(伪随机数)
- 数据挖掘简介