gpt4 book ai didi

c# - 反序列化包含 List : Why is List initially filled with Nulls? 的类

转载 作者:太空狗 更新时间:2023-10-29 17:55:42 24 4
gpt4 key购买 nike

我有一个类Bar其中包含 List<Foo> , 与 FooBar实现 ISerializable。

反序列化 Bar 时, List<Foo>最初填充有(正确的数量)null ;然后退出 Bar反序列化 ctor,每个 Foo的反序列化构造函数被调用,填充 List<Foo>与(正确反序列化)Foo

为什么会这样?我无法在测试项目中复制它:无论我尝试过什么,结果都是 FooBar 之前 调用反序列化 ctors Actor 。这实际上是我想要的行为,因为我需要填充列表以便对反序列化的 Bar 进行一些初始化。 !

任何人都知道可能导致 Foo 的原因这么晚才反序列化?谢谢!

最佳答案

这是逻辑。反序列化器逐个对象反序列化它,然后跟随引用。所以,首先它用 X 空格设置列表......实际上都是 NULL。

然后它进入并逐个对象反序列化,将它们放入适当的引用中。

您的所有检查等逻辑只应在反序列化完成后运行 - 根据定义,在反序列化程序运行时,您必须始终处于部分/无效状态。

为什么事情做得太晚的问题可能是你的测试场景比真实数据容易得多,所以有些东西让序列化程序在生产端“改变顺序”。

关于c# - 反序列化包含 List<T> : Why is List initially filled with Nulls? 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400805/

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