使对象可序列化

添加 [Serializable] 属性以标记整个对象以进行二进制序列化:

[Serializable]
public class Vector
{
    public int X;
    public int Y;
    public int Z;

    [NonSerialized]
    public decimal DontSerializeThis;

    [OptionalField]
    public string Name;
}

除非我们明确选择退出使用 [NonSerialized] 属性,否则所有成员都将被序列化。在我们的例子中,XYZName 都是序列化的。

除非标有 [NonSerialized][OptionalField],否则所有成员都必须出现在反序列化中。在我们的示例中,XYZ 都是必需的,如果流中不存在反序列化,则反序列化将失败。DontSerializeThis 将始终设置为 default(decimal)(即 0)。如果流中存在 Name,则将其设置为该值,否则将设置为 default(string)(为空)。[OptionalField] 的目的是提供一点版本容差。