Por que estou recebendo esta NullReferenceException?
-
06-09-2019 - |
Pergunta
Eu estou trabalhando em um projeto que envolve algum código de serialização caseira (des), e eu ter executado em alguns problemas com o desserialização de uma lista. O código a seguir está jogando um NullReferenceException na segunda linha, mesmo que o var list
não é nulo, e, felizmente, relata Count = 0
ao passar o mouse sobre ele.
System.Collections.IList list = ((System.Collections.IList)obj);
list.Add(val);
As minhas variáveis ??estão sendo instanciado um pouco estranho, talvez isso tem algo a ver com isso? Este é o código envolvido.
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(type);
Onde 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");
Qualquer ajuda seria muito apreciada:)
Solução
Bah, eu odeio encontrar uma resposta apenas depois que eu fiz uma pergunta sobre isso. Como se vê List<T>
não gosta de ser instanciado usando GetUninitializedObject
, então eu tive que adicionar um caso especial para Listas de usar Activator.CreateInstance (que não é uma opção para a maioria das classes).
Outras dicas
O seu val
instanciado corretamente? Essa é a única coisa que eu posso ver sendo um problema aqui, mas é difícil dizer.