2011-05-05 25 views
5

Quiero serializar una instancia de una clase a IsolatedStorage. He intentado SharpSerialiser, pero puede serializar solo propiedades públicas. Pero mi clase tiene miembros privados (sin propiedades), miembros estáticos, etc. En DataContractSerializer también creo que podemos serializar solo miembros públicos. ¿Hay alguna forma de serializarlo?¿Cómo serializar una instancia de una clase que contiene miembros privados?

Gracias y Saludos vaysage

+0

Generalmente no serializamos miembros privados. ¿Hay alguna razón especial para hacer eso? – ScruffyDuck

Respuesta

6

Silverlight tiene un modelo de seguridad reflexión más dura, y no es compatible con los trucos habituales utilizadas para eludir esto. AFAIK, usted está limitado a miembros públicos.

Por supuesto, puede hacer que el objeto se serialice automáticamente, quizás mediante una interfaz personalizada y generación de código en una clase parcial (para evitar la implementación manual).

Sin embargo, IMO un mejor enfoque aquí es crear un modelo de clase DTO secundario; que es mutable y que tiene propiedades públicas con get y set. La mayoría de los serializadores estarán contentos con eso, y siempre puede proporcionar un operador de conversión entre su modelo de DTO y su modelo de objeto primario.

6

Mi preferencia es la serialización binaria personalizada, que garantiza que solo serialice lo que realmente necesita, es el método de serialización más rápido y le permite serializar miembros privados si realmente lo necesita. Kevin Marshall tiene una gran publicación de comparación de serialización que cubre las opciones y también ofrece cifras de rendimiento: http://blogs.claritycon.com/kevinmarshall/2010/11/03/wp7-serialization-comparison/

+0

Muchas gracias. Ese enlace me ayudó a aprender la serialización binaria personalizada. Pero puedo marcar solo una respuesta. Así que voté en alza. – Vaysage

Cuestiones relacionadas