使物件可序列化
新增 [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]
的目的是提供一點版本容差。