使物件可序列化

新增 [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] 的目的是提供一點版本容差。