我正在开发一个涉及一些自制(反)序列化代码的项目,我遇到了一些关于反序列化List的问题。下面的代码在第二行抛出NullReferenceException,即使var list
不为null,并且在将鼠标悬停在它上面时会愉快地报告Count = 0
。
System.Collections.IList list = ((System.Collections.IList)obj);
list.Add(val);
我的变量实例化有点奇怪,所以也许这与它有关?这是涉及的代码。
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(type);
type
System.Type.GetType("System.Collections.Generic.List`1[[Networking.Client, Networking, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
非常感谢任何帮助:)
答案 0 :(得分:2)
Bah,我讨厌在我提出问题之后找到答案。事实证明List<T>
不喜欢使用GetUninitializedObject
进行实例化,所以我不得不为Lists添加一个特殊情况来使用Activator.CreateInstance(这对大多数类来说都不是一个选项)。
答案 1 :(得分:0)
您的val
是否已正确实例化?这是我唯一能看到的问题,但很难说。