Com que frequência o método GetObjectData de cada objeto deve ser chamado durante a serialização personalizada?

StackOverflow https://stackoverflow.com/questions/3865297

Pergunta

Estou serializando os dados no meu aplicativo usando serialização personalizada, ou seja, cada uma das classes que estou armazenando tem o [Serializable] atributo e implementos ISerializable. O gráfico de objetos sendo serializado é razoavelmente complexo, com muitas referências cruzadas entre os objetos/classes. A serialização funciona, mas é muito lento. :(

Colocando um ponto de interrupção em cada classe relevante GetObjectData Método, descobri que estou recebendo muitos, muitos mais hits do que obtidos.

Estou confuso - meu entendimento da estrutura de serialização foi que ele armazenaria cada objeto apenas uma vez, mesmo que o gráfico de objetos contivesse várias referências a ele. Eu assumi que isso significava que cada objeto GetObjectData O método precisaria ser chamado apenas uma vez durante a economia. Estou errado?

E se sim, há algo que eu possa fazer nessa abordagem para reduzir o número de chamadas para minhas aulas ' GetObjectData métodos?

Obrigado.

Foi útil?

Solução

o MSDN DOCs Não garante apenas 1 chamada por instância do objeto.

Você já tentou isso com diferentes formatados? Existem comentários aqui No sentido de que o trabalho selecionado estava sendo feito para melhorar isso. Especificamente para Indigo (também conhecido como WCF).

Não é garantido que esse método seja chamado apenas uma vez por instância do objeto durante a serialização. Portanto, o método deve ser implementado de tal maneira que seu comportamento seja o mesmo, independentemente do número de vezes que é chamado.

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