Mono, Serializable objetos con MarshalByRefObject
-
21-08-2019 - |
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 ^ _ ^
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.