Hola Diego,

En principio y contestando tu pregunta, no es sencillo conseguir una
duplicacion de un objeto completamente generica. Por ejemplo, si el objeto a
duplicar tiene referencias a otros objetos, estos deben duplicarse o no,
simplemente copiando las referencias?

Hay una tecnica que involucra serializacion a memoria y deserializacion,
pero no es del todo generico.

Esto me da pie a proponerte una alternativa:

correo.ValidateAndSyncDireccion(txtDireccion.Text);

Este metodo debe validar y luego setear la nueva direccion, caso contrario
lanzar una excepcion. Tambien puede dividirse en un metodo de validacion y
luego sincronizar.

if (correo.ValidateDireccion(txtDireccion.Text))
    correo.SyncDireccion(txtDireccion.Text); // tambien lanza excepcion...

La ventaja es que en ningun momento tu objeto CorreoElectonico es invalido,
en el ejemplo que copiaste vos hay un lapso de tiempo en el que el objeto es
invalido. Esto no es lo unico malo, lo peor es que tu objeto, en su logica
interna, *debe permitir* un estado invalido.

----------------------------------
Carlos Peix

2011/6/6 Diego Carosella <[email protected]>

> buenos dias,
>
> Quisiera saber si conocen algun metodo para copiar las propiedades de un
> objeto a otro,  en vez de hacerlo manualmente una por una.
>
> le doy un ejemplo de lo que quiero hacer:
>
>  1- clono el objecto correo para validar los datos ingresados por el
> usuario
>  CorreoElectronico correoAux = (CorreoElectronico)correo.Clone();
>
>  2- seteo la direccion ingresada por el usuario
> correoAux.Direccion = txtDireccion.text;
>
> 3- valido la direccion, si es correcta la copio al objecto original
> if (validar(correoaux))
>   correo.Direccion = correoAux.Direccion;
>
> hay alguna forma de hacer por ej:
>
>  correo.CopyFrom(correoAux);
>
> en vez de copiar propiedad por propiedad?
>
> muchas gracias de antemano
>
>  --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a