使对象可序列化
添加 [Serializable]
属性以标记整个对象以进行二进制序列化:
[Serializable]
public class Vector
{
public int X;
public int Y;
public int Z;
[NonSerialized]
public decimal DontSerializeThis;
[OptionalField]
public string Name;
}
除非我们明确选择退出使用 [NonSerialized]
属性,否则所有成员都将被序列化。在我们的例子中,X
,Y
,Z
和 Name
都是序列化的。
除非标有 [NonSerialized]
或 [OptionalField]
,否则所有成员都必须出现在反序列化中。在我们的示例中,X
,Y
和 Z
都是必需的,如果流中不存在反序列化,则反序列化将失败。DontSerializeThis
将始终设置为 default(decimal)
(即 0)。如果流中存在 Name
,则将其设置为该值,否则将设置为 default(string)
(为空)。[OptionalField]
的目的是提供一点版本容差。