Сериализация XML - обработка особых случаев - PullRequest
2 голосов
/ 12 июля 2010

Мне нужно XML сериализовать некоторые классы, которые в некоторых случаях не соответствуют правилам и рекомендациям, что необходимо для работы встроенной сериализации.Это включает в себя свойства, которые являются типами интерфейса и свойствами без установщиков.

Я знаю, как реализовать IXmlSerializable, но это может быть много работы;так как большинство свойств не требуют специальной обработки.Могу ли я написать только код для обработки этих «специальных свойств» и заставить сериализатор стандартного XML сериализовать свойства, которые он знает, как сериализовать?

Также приветствуются предложения для библиотек с открытым исходным кодом или аналогичных, которые могут лучше выполнять сериализацию объектов в XML без слишком большого количества пользовательского кода.

1 Ответ

1 голос
/ 13 июля 2010

Существует инструмент под названием Automapper Этот инструмент отображает два типа друг на друга.Для вашей проблемы вы можете создать стандартный тип соответствия и сопоставить нестандартный тип с этим.Большинство свойств будет отображено с помощью автоматического преобразователя.Специальные, которые вы можете сопоставить своими собственными методами.

Сначала вам нужно настроить сопоставления:

Mapper.CreateMap<ITestSequence, TestSequence>();
Mapper.CreateMap<ITestBlock, TestBlock>();

А затем сопоставить ваши объекты:

Mapper.Map(srcTb, dstTb);

, чтоустановить все общие свойства.Остальное вы можете сделать самостоятельно.

...