Конвертировать граф объекта в дерево - PullRequest
0 голосов
/ 18 апреля 2011

Скажем, у меня есть произвольный объект .NET (хорошо, я могу гарантировать, что к нему применено [DataContract]) и хочу преобразовать его в дерево (например, XML), выполняя специальную обработку всех его строковых свойств. Это похоже на типичную задачу сериализации, но из того, что я узнал, ни один из сериализаторов .NET не дает мне контроль над обработкой содержимого свойств (я пытался использовать DataContractSerializer / XmlSerializer, но XmlObjectSerializerWriteContext является внутренним, благодаря его дизайнерам) , Мне не нужно десериализовать дерево обратно, оно только для визуального представления.

Есть ли у меня какие-либо параметры, кроме ручной сериализации с использованием отражения (похоже, слишком много работы для обработки коллекций, циклов в графиках и т. Д.)?

Обновление: Завершено пользовательской рекурсивной функцией, основанной на отражении.

1 Ответ

1 голос
/ 18 апреля 2011

Почему бы не выполнить обработку строк в выводе XML? Возьмите все элементы, которые являются строками, используя XPATH, и выполните операцию.

Вы также можете реализовать XmlDictionaryWriter для выполнения обработки строк (вы можете внутренне обернуть XmlDictionaryWriter и вызывать методы для этого):

http://msdn.microsoft.com/en-us/library/system.xml.xmldictionarywriter.aspx

и используйте DataContractSerializer для записи в него:

http://msdn.microsoft.com/en-us/library/ms195072.aspx

...