XmlSerializer и допустимые значения - PullRequest
1 голос
/ 23 ноября 2011

Здравствуйте, я работаю над проектом, в котором я должен сериализовать и десериализовать свои объекты в Xml и обратно в объекты. Я использую класс XmlSerializer для достижения этой цели. Поэтому моя проблема в том, что я не могу понять, как предотвратить сериализацию, если значение атрибута элемента недопустимо. Например, у меня есть элемент с именем лица, которые содержат 1 атрибут (имя) Я хотел бы запретить пользователю добавлять в этот атрибут другие имена, кроме (Alex, Nick, ..). Мне нужно что-то вроде ограничения xsd (шаблон) в этом случае, но для моей модели. Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Если вы просто хотите условную сериализацию, вы можете сделать это с помощью шаблона ShouldSerialize *. Так что если у вас есть свойство Name (например), вы можете добавить:

public bool ShouldSerializeName() {
    /* validate; return true to serialize, false to skip */
}

Метод должен быть общедоступным для XmlSerializer, хотя тот же шаблон работает в других местах (например, System.ComponentModel), даже если no-public.

0 голосов
/ 23 ноября 2011

Я не уверен, что в определенных обстоятельствах рекомендуется игнорировать некоторые данные, но если вы действительно хотите это сделать, взгляните на IXmlSerializable Interface . Я думаю, что реализация этого интерфейса вручную будет единственным способом удовлетворить ваши требования.

...