Почему я получаю это исключение NullReferenceException? - PullRequest
0 голосов
/ 25 февраля 2009

Я работаю над проектом, который включает в себя некоторый самодельный (де) код сериализации, и у меня возникли некоторые проблемы с десериализацией List. Следующий код генерирует исключение NullReferenceException во второй строке, хотя переменная list не равна нулю и с радостью сообщает 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");

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

Ответы [ 2 ]

2 голосов
/ 25 февраля 2009

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

0 голосов
/ 25 февраля 2009

Правильно ли создан val? Это единственная вещь, которую я вижу в этом, но трудно сказать.

...