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

C# 在序列化对象之前设置指定的标志,c#,reflection,xml-serialization,C#,Reflection,Xml Serialization,我们有一个将其序列化和反序列化为对象层次结构的模式。 架构中的某些元素是可选的。xsd工具创建一个cs文件,该文件为每个可选元素插入一个属性。此属性以“Specified”结尾,即nameSpecified告诉序列化程序和反序列化程序在处理时包含可选的“name”元素。 我正在尝试编写一个方法,该方法使用反射在对象层次结构中进行转换,如果一个属性有一个值,并且它有一个“指定的”对应属性,我想将指定属性设置为true 我试着用反射来做这件事 foreach(PropertyInfo p in M

我们有一个将其序列化和反序列化为对象层次结构的模式。 架构中的某些元素是可选的。xsd工具创建一个cs文件,该文件为每个可选元素插入一个属性。此属性以“Specified”结尾,即nameSpecified告诉序列化程序和反序列化程序在处理时包含可选的“name”元素。 我正在尝试编写一个方法,该方法使用反射在对象层次结构中进行转换,如果一个属性有一个值,并且它有一个“指定的”对应属性,我想将指定属性设置为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”的对应名称是否存在,然后检查它是否有值。并再次对其进行翻页,以将所有指定字段更新为true。似乎有点太远了:(

有人有什么好主意吗