gpt4 book ai didi

c# - 反序列化通用列表返回 null

转载 作者:太空狗 更新时间:2023-10-29 22:56:26 25 4
gpt4 key购买 nike

我正在反序列化一个对象,如下所示:

public class myClass : ISerializable
{
public List<OType> value;

public myClass(SerializationInfo info, StreamingContext context)
{
this.value = (List<OType>)info.GetValue("value", typeof(List<OType>));
}

void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("value", value, typeof(List<OType>));
}
}

列表中的对象确实具有可序列化属性。序列化时,不会抛出任何错误并且列表从不 为空,但反序列化时我的所有列表都是空的,我不确定为什么。

我将其标记为 CQ 已回答。我能够制作一个小型的一次性测试应用程序,它可以正确地序列化/反序列化我正在尝试使用的对象,但我似乎仍然无法让它在我的生产代码中工作,但我怀疑它是我的小东西失踪了。

最佳答案

当您说您的列表为空时,您的意思是列表本身为空,还是其中填充了空条目?如果是后者,那么这是一个已知的 .Net 问题:参见 my question同样的问题。

基本上,List<T> s 仅在反序列化时才初始化;它们包含的对象仅在对象图被反序列化后才被反序列化。解决这个问题的一种方法是将任何需要它们的代码放在 OnDeserialized 中。方法,或带有 [OnDeserializedAttribute] 的方法.参见 MSDN .

关于c# - 反序列化通用列表返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/517064/

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