gpt4 book ai didi

.net - 二进制序列化,向类添加一个新字段——它会工作吗?

转载 作者:行者123 更新时间:2023-12-01 01:33:19 24 4
gpt4 key购买 nike

我有一个客户端和一个服务器应用程序,它们使用二进制序列化通过 .NET 2.0 Remoting 进行通信。

对数据传输对象的接口(interface)和实现类之一进行了小的更改,添加了一个字符串数组字段。

如果我重新部署新版本的服务器应用程序,我的旧客户端会继续工作吗?

我认为他们会,因为没有从接口(interface)和直接实现中删除任何内容,但我不确定。

它可能归结为另一个问题 - 二进制反序列化器是否“足够聪明”
通过将无法在输入二进制流中找到数据的字段初始化为 null 来处理这种情况,还是会中断并抛出异常?

最佳答案

您可以向新属性添加属性:OptionalField .如果没有该属性,反序列化器将无法将序列化数据转换回更新后的定义。该属性是为了确保反序列化器可以优雅地处理“丢失”的数据。

如果你想为新属性设置一个默认值,在没有合适的数据被反序列化的情况下,实现 IDeserializationCallback接口(interface),并在结果方法中设置默认值(如果有)。

关于.net - 二进制序列化,向类添加一个新字段——它会工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com