在序列化对象之前设置指定的标志

时间:2010-03-18 18:48:33

标签: c# reflection xml-serialization

我们有一个模式,我们将序列化和反序列化为对象层次结构。 一些元素在模式中是可选的。 xsd工具创建一个cs文件,该文件为每个可选元素插入一个属性。此属性以“指定”结尾,即nameSpecified告诉序列化程序和反序列化程序在处理时包含可选的“name”元素。 我正在尝试编写一个使用反射来破解对象层次结构的方法,如果属性具有值并且它具有“Specified”对应属性,我想将Specified属性设置为true。

我尝试使用反射来做到这一点,即

 foreach(PropertyInfo p in MyObject
             .GetType()
             .GetNestedTypes()
             .GetType()
             .GetProperties()
            {
               if the field name ends in Specified check if
               there is a field with the same name without Specied. 
               If there is, and that field name has a value, then set 
               the field name that ends in Specified to true;
            }

它的中间位我遇到了麻烦。我最好不想破解层次结构并创建以Specified结尾的属性列表,然后再次翻录它以查看是否存在没有“Specified”结尾的相应名称,然后检查它是否有值。并再次翻录它以将所有Specified字段更新为true。似乎有点长的路要走:(

任何人都有任何好主意吗?

0 个答案:

没有答案