Estoy intentando serializar un objeto a XML que tiene varias propiedades, algunas de las cuales son de solo lectura.Serializar datos de miembros privados
public Guid Id { get; private set; }
He marcado la clase [Serializable] y he implementado la interfaz ISerializable.
A continuación se muestra el código que estoy utilizando para serializar mi objeto.
public void SaveMyObject(MyObject obj)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
TextWriter tw = new StreamWriter(_location);
serializer.Serialize(tw, obj);
tw.Close();
}
Desafortunadamente se cae en la primera línea con este mensaje.
InvalidOperationException era no controlada: No se puede generar una clase temporal (resultado = 1). CS0200 error: la propiedad o indizador MyObject.Id 'no se puede asignar a - que es de sólo lectura
Si fijo la propiedad Id a pública que trabaja muy bien. ¿Puede alguien decirme si estoy haciendo algo, o al menos si es posible?
+1, gracias por el asesoramiento sobre mi respuesta. –
He cambiado mi código para usar DataContractSerializer y me he dado cuenta de que todavía está ejecutando el método GetObjectData. ¿Estoy en lo cierto al pensar que puedo poner atributos en mis propiedades para serializarlos, o puedo implementar la interfaz ISerializable? –
Si implementa ISerializable (¿o es IXmlSeializable?), Básicamente está haciendo todo el trabajo usted mismo ... –