Permite asignar los valores de un objeto dado a otro. Ambos objetos deberán tener en común, los mismos nombres en las propiedades para que este metodo sea util.
Metodo de Ejemplo:
public Boolean Update()
{
try
{
DAL.Alumno alumno = ConectarDAL.Modelo.Alumno.
First(x => x.rut == rut);
alumno.rut = rut;
alumno.digito = digito;
alumno.nombre = nombre;
alumno.apellidos = apellidos;
alumno.email = email;
ConectarDAL.Modelo.SaveChanges();
return true;
}
catch
{
return false;
}
}
Con la clase intercambio quedaría:
public Boolean Update()
{
try
{
DAL.Alumno alumno = ConectarDAL.Modelo.Alumno.
First(x => x.rut == rut);
IntercambioValores.Syncronize(alumno , this);
ConectarDAL.Modelo.SaveChanges();
return true;
}
catch
{
return false;
}
}
CLASE:
public class IntercambioValores
{
/// <summary>
/// Sincroniza los valores de propiedades comunes entre 2 objetos
/// </summary>
/// <param name="origen">Objeto con los valores a copiar hacia el destino.</param>
/// <param name="destino">Objeto que recibe la copia de los valores en sus propiedades</param>
internal static void Syncronize(object origen, object destino)
{
/* Auxiliares para Reflection del Tipo de Dato Origen */
Type tipo = null;
PropertyInfo[] propiedades = null;
/* Obtiene información del Tipo Origen y sus Propiedades */
tipo = origen.GetType();
propiedades = tipo.GetProperties();
/* Recorre las propiedades del Origen para asignar los valores al destino */
foreach (PropertyInfo propiedad in propiedades)
{
try
{
/* Recupera propiedad destino por su nombre */
PropertyInfo propInfo = destino.GetType().GetProperty(propiedad.Name);
/* Asigna valor destino desde el origen */
propInfo.SetValue(destino, propiedad.GetValue(origen, null));
}
catch {/* Los valores que no se pueden asignar son ignorados */}
}
Uso:
IntercambioValores.Syncronize(ObjOrigen, ObjDestino);