Я использую XmlSerializer для сериализации объекта и записи его в файл. У меня был довольно большой успех с сериализатором, делающим то, что я хочу, с точки зрения вложенных элементов и того, что сериализуется как элементы и атрибуты. К сожалению, я столкнулся с проблемой, когда мне нужно сериализовать один член класса перед другим. В другом месте у меня сработало то, что все, что объявлено первым, сначала сериализуется, но в этом случае у меня не так много успеха с этим. Есть ли способ вручную контролировать порядок сериализации вещей?
Управление порядком сериализации в C#
Ответы (2)
[XmlElementAttribute(Order = 1)]
public int Field1 {...}
[XmlElementAttribute(Order = 2)]
public int Field2 {...}
Подсказка: вы должны указать Order
для всех ваших участников.
Будьте осторожны — десериализация будет работать только в том случае, если свойства в XML-документе расположены в том же порядке. В противном случае он будет молча игнорировать свойства не по порядку.
person
Robert Harvey
schedule
30.07.2010
Идеально. Думаю, я либо пропустил это в MSDN, либо недостаточно копался, чтобы найти. Спасибо.
- person Zann Anderson; 31.07.2010
Возможно, связано: есть ли способ управлять порядком с помощью XML-атрибутов?
XmlAttributeAttribute
не имеет такого свойства.
- person Travis Gockel; 05.08.2010
@Travis: По моему опыту, меньше (если вообще есть) проблем с сериализацией атрибутов в том порядке, в котором они объявлены.
- person Robert Harvey; 05.08.2010
если вы не укажете порядок для всех, остальные будут добавлены в конце или в начале? Было бы неплохо разрешить отрицательные числа контролировать это
- person George Birbilis; 11.11.2020
чтобы ответить на мой собственный комментарий, к сожалению, XmlSerializer требует, чтобы вы добавили порядок для всех элементов и также имели такие классы-предки. Если вы не можете управлять классом-предком, вы можете использовать XmlAttributeOverride, как показано здесь: dotnetfiddle.net/Bvbi0N
- person George Birbilis; 17.11.2020
XmlElementAttribute.Order
, который управляет " явный порядок, в котором элементы сериализуются или десериализуются».
person
Tim Robinson
schedule
30.07.2010