Безопасность - не единственная проблема; просто сериализация имеет смысл только для определенных классов. Например, он делает маленький snse для сериализации «соединения». Соединение строка , конечно, но само соединение? Неа. Аналогично, все, что требует неуправляемого указателя / дескриптора, не будет очень хорошо сериализовано. Ни делегаты.
Кроме того, XmlSerializer
и DataContractSerializer
(по умолчанию) являются сериализаторами tree , а не сериализаторами graph - поэтому любые рекурсивные ссылки (например, Parent
) приведут к сломаться.
Маркировка класса предпочтительным токеном сериализатора - это просто способ сказать "и это должно иметь смысл".
IIRC, оба [XmlSerializer
и [DataContractSerializer]
использовали , чтобы быть очень жесткими относительно требовательных вещей, таких как [Serializable]
, [DataContract]
или [IXmlSerializable]
, но они стали немного либеральнее в последнее время.