我正在经历很多代码和标记类,我现在想要使用Serialization属性来保留它们。我还没有编写二进制序列化/去同步引擎,所以我想在完成之后我会回答我自己的问题! - 但是如果可以的话,我想在这里尝试获得更早的回复。我遇到过一些包含如下属性的代码:
public string Id
{
get;
set;
}
“Id”是否被序列化?我知道在编译器下面自动创建一个类成员,但这是否正确序列化(因为类实例的所有数据成员都写入存储)?感觉它不会,因为你不能将Serialized / NonSerialized属性放在属性上。
提前致谢。
答案 0 :(得分:8)
您可以使用[field:NonSerialized]
属性将 events 的支持字段标记为不可序列化,但似乎这对于自动属性来说是不可能的。使用自动属性,后备字段将被序列化,防止该行为的唯一方法是将它们转换为常规属性,并正常使用[NonSerialized]
注释显式支持字段。
答案 1 :(得分:3)
正如@John在评论中指出的那样,BinaryFormatter
(System.Runtime.Serialization.Formatters.Binary
)将序列化您自动生成的支持字段。您可以通过实现ISerializable
接口来使用自定义序列化,然后为您的类确定哪些值是序列化的。