ShouldSerialize * () vs * Указанный шаблон условной сериализации
Мне известны оба паттерна ShouldSerialize * и паттерна * Specified и как они работают, но есть ли разница между ними?
Есть ли какие-то «ошибки», использующие один метод против другого, когда определенные вещи должны быть условно сериализованы?
Этот вопрос относится к использованиюXmlSerializer
, но общая информация по этой теме также приветствуется.
Существует очень мало информации по этой теме, так что это может быть потому, что они выполняют одну и ту же цель, и это выбор стиля. Однако кажется странным, что разработчики .NET анализируют класс с помощью отражения и ищут один или оба шаблона, чтобы определить, как ведет себя сгенерированный сериализатор, поскольку он замедляет генерацию сериализатора, если это не просто артефакт обратной совместимости.
РЕДАКТИРОВАТЬ: Для тех, кто не знаком с двумя шаблонами, если либо*Specified
собственность илиShouldSerialize*
Метод возвращает true, затем это свойство сериализуется.
public string MyProperty { get; set; }
//*Specified Pattern
[XmlIgnore]
public bool MyPropertySpecified { get{ return !string.IsNullOrWhiteSpace(this.MyProperty); } }
//ShouldSerialize* Pattern
public bool ShouldSerializeMyProperty()
{
return !string.IsNullOrWhiteSpace(this.MyProperty);
}