Подтвердить что ты не робот

Является ли атрибут DataMember IsRequired в сочетании с типом Nullable противоречивым?

Я столкнулся с этим сегодня в контракте WCF:

[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; } 

Каковы последствия IsRequired = True и допустимого значения DateTime? Они кажутся противоречивыми друг другу.

4b9b3361

Ответ 1

Надеюсь, что этот подобный противоречивый случай ответит на ваш вопрос.

Взаимодействие с IsRequired

Атрибут DataMemberAttribute имеет свойство IsRequired ( по умолчанию - false). Свойство указывает, является ли данный элемент данных должен присутствовать в сериализованных данных, когда он десериализуется. Если IsRequired имеет значение true, (это означает, что значение должно быть настоящее время), а EmitDefaultValue - false (указывает, что значение не должно присутствовать, если установлено его значение по умолчанию), по умолчанию значения для этого элемента данных не могут быть сериализованы, потому что результаты было бы противоречивым. Если такой элемент данных установлен по умолчанию значение (обычно нуль или ноль) и попытка сериализации, Вызывается исключение SerializationException.

Ответ 2

Догадка: вы ДОЛЖНЫ иметь node для 'LastModified' (= required), но содержимое может быть пустым (= значение равно null).