Можно ли использовать EmitDefaultValue «иногда», используя DataContractSerializer в .NET? - PullRequest
2 голосов
/ 15 марта 2012

Есть ли способ условно указать EmitDefaultValue во время выполнения для DataContractSerializer в .NET? Есть ли обходные пути?

Например, мне любопытно, могу ли я использовать EmitDefaultValue = false для сериализации WCF, но я хотел бы иметь возможность использовать EmitDefaultValue = true для XML, сгенерированных для внешних интерфейсов, таких как print.

1 Ответ

1 голос
/ 26 апреля 2012

Что ж, потенциально у вас есть два варианта: использовать суррогат контракта данных или IObjectReference . Я думаю, что оба из них для вас излишни, но если вы действительно, действительно хотите поддержать этот сценарий с вашей стороны, может быть, это жертва, которую вы готовы пойти на это. Обратите внимание, что их использование также оказывает существенное влияние на производительность, совместимость, доступность через схему и т. Д.

Я также хочу отметить, что то, что вы пытаетесь сделать - EmitDefaultValue со значением false - не рекомендуется по ряду причин, хотя я знаю, каковы общие мотивы. См. Почему не рекомендуется использовать [DataMember (EmitDefaultValue = false)]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...