使用Serializable属性和实现ISerializable有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

使用Serializable属性和实现ISerializable接口有什么区别?

提问于
用户回答回答于

当你使用这个SerializableAttribute属性时,你在编译时将一个属性放在一个字段上,这样,在运行时,序列化设施将通过在类/模块/组件上执行反射来知道基于属性序列化的内容类型。

[Serializable]
public class MyFoo { … }
public class MyFoo
{
    private int bar;

    [Serializable]
    public int WhatBar
    {
       get { return this.bar; }
    }
}

使用该属性,你可以选择选择哪些字段需要序列化。

另请参阅StackOverflow上的自定义序列化示例

用户回答回答于

该SerializableAttribute指示做框架默认序列化过程。如果你需要更多的控制,你可以实现ISerializable接口。然后你会把你自己的代码序列化GetObjectData方法中的SerializationInfo对象,并更新传入它的对象。

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问5 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    2 粉丝477 提问3 回答
  • 军哥

    重庆雷驰信息技术有限公司 · 经理 (已认证)

    5 粉丝1 提问3 回答

扫码关注云+社区

领取腾讯云代金券