处理.Net序列化Nullable类型的方式
发布时间:2020-12-16 23:05:50 所属栏目:百科 来源:网络整理
导读:默认情况下,.Net最终将xml序列化为可空类型转换为类似于此的节点 SomeNode p3:nil="true" xmlns:p3="http://www.w3.org/2001/XMLSchema-instance" / 不幸的是,鉴于我正在序列化的对象模型有许多很多空值,我最终得到一个非常大的xml文档(185mb),它应该小得多,
默认情况下,.Net最终将xml序列化为可空类型转换为类似于此的节点
<SomeNode p3:nil="true" xmlns:p3="http://www.w3.org/2001/XMLSchema-instance" /> 不幸的是,鉴于我正在序列化的对象模型有许多很多空值,我最终得到一个非常大的xml文档(185mb),它应该小得多,完全删除空节点(20mb) 当我添加webservice引用时,对象定义是自动生成的,所以,幸运的是,它被声明为部分类,我能够创建自己的部分类,添加一堆ShouldSerialize *方法以防止序列化任何空值. 然而,这是相当繁琐的,因为类很大,并且有很多类. 有没有办法可以使用反射,简化在运行时为所有公共属性添加ShouldSerialize *方法的过程? 就像我写的那样,我手动为一些类做了这个,它是高度重复的,100个函数都看起来像这样 public bool ShouldSerializeNotes() { return Notes != null; } 谢谢, 解决方法
与Marc的想法类似,但更精简一点,您可以将所有类和属性名称粘贴到文本或XML文件中,然后将其用作
T4 template的输入,使用ShouldSerialize *方法生成部分类.在VS2008中,T4似乎完全没有记录,但是如果你在解决方案中为.tt扩展名提供一个文本文件,它应该为你设置正确的自定义工具来生成代码.在VS2010中,一切都得到了适当的支持.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |