Столкнулся со следующей проблемой.
Класс разбит на 2 файла:
1 часть класса: сгенерённая дизайнером LINQ — в одном файле.
2 часть класса: дополнительные свойства — в другом файле.
При сериализации такого класса на разных машинах получается разный результат.
На одной машие сначала сериализуются сгенеренные поля, а затем дополнительные.
На другой машине — наоборот — сначала дополнительные, потом сгенеренные.
Собственно, вопрос:
Можно ли контролировать порядок, в котором будут сериализоваться части такого partial-класса?
(чтобы порядок свойств в результате сериализации не зависел от того, где запускается приложение)
P.S. Можно, конечно, вручную добавить ко всем сериализуемым свойствам
атрибут [XmlElement(Order=##)], но при перегенерации дизайнером кода
придется задавать порядок заново, что не есть гуд.
Здравствуйте, Neadequant, Вы писали:
N>Столкнулся со следующей проблемой.
N>Класс разбит на 2 файла:
…
N>При сериализации такого класса на разных машинах получается разный результат.
N>На одной машие сначала сериализуются сгенеренные поля, а затем дополнительные.
N>На другой машине — наоборот — сначала дополнительные, потом сгенеренные.
Говоря "сериализация" нодо уточнять, какая именно. Xml?
N>Собственно, вопрос:
N>Можно ли контролировать порядок, в котором будут сериализоваться части такого partial-класса?
N>(чтобы порядок свойств в результате сериализации не зависел от того, где запускается приложение)
Вне зависимости от partial-не partial, сомневаюсь, что бы XmlSerializer вообще как-то гарантировал бы порядок сохранения свойств. Надо явно указать или Order. Так как речь о сгенерированном классе, то прямо Order указать не получится. Можно воспользоваться
XmlAttributeOverrides или самостоятельно реализовать
IXmlSerializable.