自动实现的属性和序列化

时间:2012-02-02 15:58:58

标签: c# .net serialization

我正在经历很多代码和标记类,我现在想要使用Serialization属性来保留它们。我还没有编写二进制序列化/去同步引擎,所以我想在完成之后我会回答我自己的问题! - 但是如果可以的话,我想在这里尝试获得更早的回复。我遇到过一些包含如下属性的代码:

    public string Id
    {
        get;
        set;
    }

“Id”是否被序列化?我知道在编译器下面自动创建一个类成员,但这是否正确序列化(因为类实例的所有数据成员都写入存储)?感觉它不会,因为你不能将Serialized / NonSerialized属性放在属性上。

提前致谢。

2 个答案:

答案 0 :(得分:8)

您可以使用[field:NonSerialized]属性将 events 的支持字段标记为不可序列化,但似乎这对于自动属性来说是不可能的。使用自动属性,后备字段将被序列化,防止该行为的唯一方法是将它们转换为常规属性,并正常使用[NonSerialized]注释显式支持字段。

答案 1 :(得分:3)

正如@John在评论中指出的那样,BinaryFormatterSystem.Runtime.Serialization.Formatters.Binary)将序列化您自动生成的支持字段。您可以通过实现ISerializable接口来使用自定义序列化,然后为您的类确定哪些值是序列化的。