Pregunta

Estoy intentando portar una aplicación C # para .NET (cliente-servidor), y estoy corriendo en problemas con la serialización.

El cliente Linux serializa y el objeto, pero el servidor de Windows no puede deserializar, dando el error:

System.Runtime.Serialization.SerializationException
El campo "MarshalByRefObject + __ identidad" que no se encuentra en la clase

Deserialización se realiza a través BinaryFormatter:

BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);

La clase en cuestión tiene el atributo Serializable, y hereda de MarshalByRefObject. Si quito la herencia de MarshalByRefObject, funciona bien. Todo funciona bien en Windows, y por lo que estoy asumiendo que esto es un problema específico de Mono.

Cualquier ayuda / consejo sería muy apreciado ^ _ ^

¿Fue útil?

Solución

serialización binaria se basa en los detalles de implementación privados. En su caso, la __identity ámbito privado. Debido a que los desarrolladores de Mono no tienen acceso a los detalles de implementación privados, éstos en ocasiones no coinciden, y por lo tanto la serialización binaria no siempre es compatible entre .Net y Mono.

Por favor, presentar un caso de prueba con Mono: http://www.mono-project.com/Bugs

Para evitar esto, usted puede hacer su propia serialización personalizado para su clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top