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