¿Con qué frecuencia debería ser llamado método GetObjectData de cada objeto durante la serialización personalizada?
-
28-09-2019 - |
Pregunta
estoy serializar los datos en mi aplicación personalizada utilizando la serialización es decir, cada una de las clases que estoy almacenamiento tiene el atributo [Serializable]
e implementos ISerializable
. El gráfico objeto que está siendo serializado es razonablemente complejo con un montón de referencias cruzadas entre los objetos / clases. La serialización funciona , pero es bastante lento. : (
Al poner un punto de interrupción en el método GetObjectData
de cada clase en cuestión, he encontrado que estoy recibiendo muchas, muchas más visitas que tengo objetos.
Estoy confundido - mi comprensión del marco de serialización era que iba a almacenar cada objeto sólo una vez, incluso si el gráfico de objetos contiene múltiples referencias a ella. Supuse que esto significaba que tendría que ser llamado una sola vez durante el ahorro método GetObjectData
de cada objeto. ¿Me equivoco?
Y si es así, ¿hay algo que pueda hacer en este enfoque para reducir el número de llamadas a los métodos GetObjectData
mis clases?
Gracias.
Solución
El MSDN docs hacer no garantiza solo 1 llamada por instancia de objeto.
¿Usted ha intentado esto con diferentes formateadores? Hay comentarios aquí en el sentido de que el trabajo seleccionado se está haciendo para mejorar esto. específicamente para Indigo (aka WCF).
No se garantiza que este método se llamará sólo una vez por objeto ejemplo durante la serialización. Por lo tanto, el método debería ser implementado de tal manera que su comportamiento será el mismo, independientemente del número de veces que se llama.