我有一些代码使用XMLSerializer在POCO对象和XML之间来回序列化/反序列化。我的对象使用通常的XMLRoot,XMLElement等属性进行修饰。
我正在寻找加速这个过程的方法,我发现在这个过程中,.NET会生成一个临时程序集,其中包含用于序列化的类型,并且您可以预先生成它。我使用ANTS来查看这个动态生成需要多长时间,这需要2-3秒,所以这绝对是加速这个过程的一种方法。
我正在使用的XML不是我生成的XML。另一个过程就是这样,我无法改变这个过程。 XML格式不正确。没有名称空间,并且根名称在不同的XML片段之间重复,这些片段对应于不同的POCO对象。因此,两个对象都必须使用XmlRoot(“XMLObj1”)属性进行修饰。
我发现了如何生成序列化程序集,但是当我运行sgen工具时,它抱怨我正在生成两个具有相同根名称的对象。它希望我将名称空间放在我的XmlRoot属性中,我可以(并且它解决了问题)但我得到的XML中没有名称空间,因此我认为这不会序列化。显然,.NET运行时可以按原样生成序列化程序集,或者我可能会得到运行时异常。那么,有没有人对如何处理这个有任何建议?如何以与.net框架相同的方式生成序列化程序集?