2009-02-24 7 views
0

Я работаю над проектом, который включает в себя некоторый код сериализации домашнего кода (de-), и я столкнулся с некоторыми проблемами при десериализации списка. Следующий код бросает исключение NullReferenceException во вторую строку, хотя var list не является нулевым и с радостью сообщает Count = 0 при наведении мыши на него.Почему я получаю это исключение NullReferenceException?

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"); 

Любая помощь будет высоко ценится :)

ответ

2

Бах, я ненавижу найти ответ сразу после того, как задал вопрос об этом. Как выясняется, List<T> не хочет, чтобы его создавали с помощью GetUninitializedObject, поэтому мне пришлось добавить специальный список для списков для использования Activator.CreateInstance (что не является вариантом для большинства классов).

0

Ваш val конкретизированных правильно? Это единственное, что я вижу в этой проблеме, но это трудно сказать.

Смежные вопросы