Clonar objeto

05/10/2009 - 22:38 por Alberto | Informe spam
Tengo un control de usuario (se llama árbol) que desciende de Panel y me
gustaría poder clonarlo para lo que escribí el siguiente método:

public Árbol Clone()
{
MemoryStream ms = new MemoryStream();

BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, this);

ms.Position = 0;
Árbol obj = (Árbol)bf.Deserialize(ms);

ms.Close();

return obj;
}

Pero me da un error ya que dice que el panel no es serializable (al objeto
árbol le añadí el atributo [Serializable]).
¿Hay algún modo de solucionarlo o tengo que clonarlo a mano?
Gracias
 

Leer las respuestas

#1 Alberto Poblacion
06/10/2009 - 07:49 | Informe spam
"Alberto" wrote in message
news:
Tengo un control de usuario (se llama árbol) que desciende de Panel y me
gustaría poder clonarlo para lo que escribí el siguiente método:

public Árbol Clone()
{
MemoryStream ms = new MemoryStream();

BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, this);

ms.Position = 0;
Árbol obj = (Árbol)bf.Deserialize(ms);

ms.Close();

return obj;
}

Pero me da un error ya que dice que el panel no es serializable (al objeto
árbol le añadí el atributo [Serializable]).
¿Hay algún modo de solucionarlo o tengo que clonarlo a mano?



En lugar del serializador binario podrías usar el serializador XML, que
no requiere que los objetos estén marcados como [Serializable]s. Sin
embargo, solo serializa las propiedades públicas (a diferencia del
BinaryFormatter, que también serializa las privadas), así que tendrás que
ver si con ellas es suficiente para clonar todo el estado de tu Arbol.

Preguntas similares