En una clase de negocios que tengo:Restablecer System.Lazy
class Employee{
public Employee() {
m_Manager = new Lazy<Manager>(() => return myRepository.GetManager(ManagerId););
}
public int ManagerId { get; set;}
private Lazy<Manager> m_Manager;
public Manager Manager {
get {
return m_Manager.Value;
}
}
}
Esto está funcionando correctamente, el repositorio personalizado se llama sólo si el acceso a la propiedad Manager. Ahora quiero "restablecer" la propiedad de mi administrador si el ManagerId cambió. Como hacer eso ?
que puedo hacer:
class Employee{
public Employee() {
m_Manager = new Lazy<Manager>(() => return myRepository.GetManager(ManagerId););
}
private int m_ManagerId;
public int ManagerId {
get { return m_ManagerId;}
set {
if(m_ManagerId != value)
{
m_ManagerId = value;
m_Manager = new Lazy<Manager>(() => return myRepository.GetManager(ManagerId););
}
}
}
private Lazy<Manager> m_Manager;
public Manager Manager {
get {
return m_Manager.Value;
}
}
}
¿Hay una forma más limpia de hacer eso? ¿No hay un m_Manager.Reset()
o algo como esto?
un poco complicado, pero como se puede encapsular en un método de extensión, esto podría simplificar mucho mi código. thx –
espero que no esté en un círculo cerrado –
parece que han realizado algunos cambios en el código fuente Lazy. Este método ya no funciona y se lanzará una excepción –
Keith