Programando yo el otro dÃa en c#... necesitaba realizar un copia integra de un objeto, pero duplicando direcciones de memoria, es decir un objeto
completamente nuevo pero que contenga los mismos datos... me interesaba que fuera una rutina
universal que me sirviera para copiar cualquier objeto independientemente de su tipo.

A partir del
artÃculo de
Christian Bigentini descubrà que utilizando técnica de serialización y deserialización podia hacer lo que me proponia.
Pero por otro lado, me interesaba que el método que realiza una copia de mi objeto estuviera de algun modo asociado al tipo... para esto, lo mejor es utilizar las
extensiones, una técnica que c# ha incluido a partir de la versión 3.0.
El código resultante es éste:
public static class MyExtensions
{
public static MiTipo Copia(this MiTipo plugin)
{
MemoryStream ms = new System.IO.MemoryStream();
BinaryFormatter bf = new BinaryFormatter(null,
new StreamingContext(StreamingContextStates.Clone));
bf.Serialize(ms, plugin);
ms.Seek(0, SeekOrigin.Begin);
MiTipo copia = (MiTipo)bf.Deserialize(ms);
ms.Close();
return copia;
}
}
Un ejemplo de su uso:
using espacio.nombres.declaracion.extensiones
...
MiTipo objeto1 = new MiTipo();
objeto1.propiedad = "hola";
MiTipo objeto2 = objeto1.Copia();
...
Etiquetas: .NET
// entrada de 3Engine @
15:09
Publicar un comentario en la entrada