Установка указанных флагов перед сериализацией объектов - PullRequest
1 голос
/ 18 марта 2010

У нас есть схема, которую мы сериализуем и десериализуем в иерархию объектов. Некоторые элементы являются необязательными в схеме. Инструмент 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. Кажется, немного далеко: (

У кого-нибудь есть яркие идеи?

...