class Employee{
public Employee() {
m_Manager = new Lazy( () => return myRepository.GetManager(ManagerId); );
}
public int ManagerId { get; set;}
private Lazy m_Manager;
public Manager Manager {
get {
return m_Manager.Value;
}
}
}
< /code>
Это работает правильно, пользовательский репозиторий вызывается только при доступе к свойству менеджера.
Теперь я хочу «сбросить» свойство моего менеджера, если ManagerId < /code> изменился. Как это сделать? < /P>
Я могу сделать: < /p>
class Employee{
public Employee() {
m_Manager = new Lazy( () => 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( () => return myRepository.GetManager(ManagerId); );
}
}
}
private Lazy m_Manager;
public Manager Manager {
get {
return m_Manager.Value;
}
}
}
< /code>
Есть ли более чистый способ сделать это? Разве нет m_manager.reset ()
В бизнес -классе у меня есть: < /p> [code] class Employee{
public Employee() { m_Manager = new Lazy( () => return myRepository.GetManager(ManagerId); ); } public int ManagerId { get; set;} private Lazy m_Manager; public Manager Manager { get { return m_Manager.Value; } } } < /code> Это работает правильно, пользовательский репозиторий вызывается только при доступе к свойству менеджера. Теперь я хочу «сбросить» свойство моего менеджера, если ManagerId < /code> изменился. Как это сделать? < /P> Я могу сделать: < /p> class Employee{
public Employee() { m_Manager = new Lazy( () => 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( () => return myRepository.GetManager(ManagerId); ); } } } private Lazy m_Manager; public Manager Manager { get { return m_Manager.Value; } } } < /code> Есть ли более чистый способ сделать это? Разве нет m_manager.reset () [/code] или что -то в этом роде?