Detectar si un objeto ha cambiado

29/12/2007 - 15:46 por Rolando | Informe spam
Tengo esta clase (VS2008 express):

public class UsuarioActivo
{
public string Usuario {get;set;};
public string Empresa {get;set;};
..
}

y necesito detectar cuando cambien los valores de la combinacion de los
campos usuario y empresa para ejecutar un metodo de usuario pero una sola
vez.
Ejemplo si cambia solo el usuario -> ejecutar el metodo una vez
si cambia solo la empresa -> ejecutar el metodo una vez
si cambian ambos a la vez -> ejecutar el metodo una vez

Me pueden dar una idea, solo una idea ya que soy novato en C#
 

Leer las respuestas

#1 Alberto Poblacion
29/12/2007 - 23:25 | Informe spam
"Rolando" wrote in message
news:
Tengo esta clase (VS2008 express):

public class UsuarioActivo
{
public string Usuario {get;set;};
public string Empresa {get;set;};
..
}

y necesito detectar cuando cambien los valores de la combinacion de los
campos usuario y empresa para ejecutar un metodo de usuario pero una sola
vez.
Ejemplo si cambia solo el usuario -> ejecutar el metodo una vez
si cambia solo la empresa -> ejecutar el metodo una vez
si cambian ambos a la vez -> ejecutar el metodo una vez

Me pueden dar una idea, solo una idea ya que soy novato en C#



Para detectar los cambios, hay que implementar explícitamente el "set" (como
se hacía en el VS2005, en lugar de usar la sintaxis "abreviada" del VS2008).
De esta forma se ejecuta tu código al pasar por ahi:

private string usuario;
public string Usuario
{
get { return usuario; }
set
{
usuario = value;
EjecutarMetodo();
}
}

private string empresa;
public string Empresa
{
get { return empresa; }
set
{
empresa = value;
EjecutarMetodo();
}
}

Observa que tu tercera hipótesis ("si cambian ambos a la vez") es imposible
que ocurra a través de las Propiedades. Nunca pueden cambiar ambos a la vez,
siempre tendrás que ejecutar una instrucción que asigne un valor al usuario
(con lo cual cambia sólo este y no la empresa) y luego, en otra instrucción
distinta, asignar un valor a la empresa (con lo cual cambia ésta y no el
usuario).

Si quieres cambiar los dos valores a la vez, tendrás que añadir un método
que los cambie en lugar de hacerlo a través de las Propiedades:

public void CambiarUsuarioYEmpresa(string usuario, string empresa)
{
this.usuario=usuario;
this.empresa=empresa;
EjecutarMetodo();
}

De esta forma, solo ejecutas una vez el EjecutarMetodo cuando cambian los
dos valores.

Preguntas similares