Безопасность не является единственной проблемой; просто, сериализация только имеет смысл для определенных классов. Например, это делает мало snse для сериализации "соединения". Соединение строка , уверенный, но само соединение? nah. Аналогично, что-либо, что требует неуправляемого указателя/дескриптора, не собирается сериализировать очень хорошо. Ни делегаты.
Кроме того, XmlSerializer
и DataContractSerializer
(по умолчанию) дерево сериализаторы, не график сериализаторы - таким образом, любые рекурсивные ссылки (как Parent
) заставят его повреждаться.
отмечание класса с предпочтительным маркером сериализатора является просто способом сказать, "и это должно иметь смысл".
IIRC, и [XmlSerializer
и [DataContractSerializer]
использовал , чтобы быть очень тверд о требовательных вещах как [Serializable]
, [DataContract]
или [IXmlSerializable]
, но они стали немного более либеральными в последнее время.
Я бы использовал объект Time вместо этого. Так что получите текущее местное время, затем увеличьте его на смещение UTC и преобразуйте в UTC, например, так:
t = Time.now # or Time.parse(myDateTime.asctime)
t # => Thu Dec 16 21:07:48 -0800 2010
(t + t.utc_offset).utc # => Thu Dec 16 21:07:48 UTC 2010
Хотя, согласно комментарию Phrogz, если вы просто хотите хранить временные метки в независимом от местоположения виде, то просто используйте текущее время UTC:
Time.now.utc