По умолчанию XmlSerializer
(автоматически предоставляется Visual Studio) используется с моей веб-службой. Я использую атрибуты только для меток [WebMethod]
и объектов [Serialize()]
и т. Д.C# XmlSerializer игнорировать элемент при десериализации
Объект, переданный в обоих направлениях между веб-службой и клиентом.
Один из членов (public MyClassType MyClass
;) этого объекта предназначен для одностороннего, одноразового значения, отправленного клиенту. Если клиент возвращает этот набор элементов, я хочу, чтобы моя веб-служба не десериализовала его так, чтобы десериализованный объект содержал значение null
для этого члена.
Проведено некоторое исследование, и если бы я использовал не XmlSerializer
, тогда я мог бы прикрепить атрибут «OnDeserialization
» к методу внутри объекта, который достиг бы того, что мне нужно.
Я пытаюсь избежать этого потенциального сценария. Веб-служба отправляет объект клиенту с помощью набора элементов. Клиент действует на члена, как должен. Клиент отправляет обратно объект с не очищенным членом (NULLed), потому что он забыл. Веб-служба выполняет некоторую дополнительную работу и отправляет один и тот же объект обратно (возможно, слегка изменен), но значение элемента не было изменено и, следовательно, перестало быть текущим, и клиент должен увидеть значение NULL для него, чтобы клиент не воздействовал на этот неизменный член снова. Веб-служба может установить новое значение для члена, на который клиент должен действовать снова.
Есть ли такой же простой способ сделать это для XmlSerializer
?
Вы хотите, чтобы член не был * десериализован * или не был установлен * после этого *? Легко предотвратить его установку, трудно предотвратить его десериализацию. – dbc
Не быть десериализованным. Когда объект возвращается от клиента, член должен быть NULL в момент повторного использования объекта в коде веб-сервиса. – skubany
Это означает, что он не установлен. Я хочу сказать, что легко удалить дескрипцию объекта MyClassType *, а затем отменить и никогда не возвращать *. – dbc