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);
}

Ответы на вопрос(2)

Ваш ответ на вопрос