C#. Сериализация partial-классов.
От: Neadequant  
Дата: 16.07.09 07:58
Оценка:
Столкнулся со следующей проблемой.
Класс разбит на 2 файла:
1 часть класса: сгенерённая дизайнером LINQ — в одном файле.
2 часть класса: дополнительные свойства — в другом файле.

При сериализации такого класса на разных машинах получается разный результат.
На одной машие сначала сериализуются сгенеренные поля, а затем дополнительные.
На другой машине — наоборот — сначала дополнительные, потом сгенеренные.

Собственно, вопрос:
Можно ли контролировать порядок, в котором будут сериализоваться части такого partial-класса?
(чтобы порядок свойств в результате сериализации не зависел от того, где запускается приложение)

P.S. Можно, конечно, вручную добавить ко всем сериализуемым свойствам
атрибут
[XmlElement(Order=##)], но при перегенерации дизайнером кода
придется задавать порядок заново, что не есть гуд.
c# partial class serialization
Re: C#. Сериализация partial-классов.
От: _FRED_ Черногория
Дата: 16.07.09 08:06
Оценка:
Здравствуйте, Neadequant, Вы писали:

N>Столкнулся со следующей проблемой.

N>Класс разбит на 2 файла:

N>При сериализации такого класса на разных машинах получается разный результат.
N>На одной машие сначала сериализуются сгенеренные поля, а затем дополнительные.
N>На другой машине — наоборот — сначала дополнительные, потом сгенеренные.

Говоря "сериализация" нодо уточнять, какая именно. Xml?

N>Собственно, вопрос:

N>Можно ли контролировать порядок, в котором будут сериализоваться части такого partial-класса?
N>(чтобы порядок свойств в результате сериализации не зависел от того, где запускается приложение)

Вне зависимости от partial-не partial, сомневаюсь, что бы XmlSerializer вообще как-то гарантировал бы порядок сохранения свойств. Надо явно указать или Order. Так как речь о сгенерированном классе, то прямо Order указать не получится. Можно воспользоваться XmlAttributeOverrides или самостоятельно реализовать IXmlSerializable.
Help will always be given at Hogwarts to those who ask for it.
Re: C#. Сериализация partial-классов.
От: ZmeyNet  
Дата: 16.07.09 09:23
Оценка:
Здравствуйте, Neadequant, Вы писали:

N>Столкнулся со следующей проблемой....


А почему данная ситуация является для тебя проблемой ??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.