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:)

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top