Как обновить зависимое свойство при изменении значения свойства? - PullRequest
1 голос
/ 31 августа 2011

У меня есть класс с двумя свойствами

public List<ChildMember> ChildMember
        {
            get
            {
                if (_ChildMember == null)
                {
                    _ChildMember = this.UserRole == EUserRole.SalesExecutive ? this.GetMembers(this.LogonName, this.FilterByMID) : this.GetChildMembers();
                }
                return _ChildMember;
            }
            set
            {
                _ChildMember = value;
            }
        }
        public int FilterByMID{ get; set; }

По сути, мне нужно обновлять список ChildMember при каждом изменении значения FilterByMID. Я знаю, что могу установить this.ChildMember = null перед обновлением значения FilterByMID, но мне было интересно, будет ли это хорошим местом для использования INotifyPropertyChanged или, возможно, лучшим способом? Любая помощь будет оценена.

P.S .: Метод GetMembers () имеет логику для проверки значений 0s и -ve в случае, если вас это беспокоит:)

PS: этот класс находится в библиотеке классов, но используется веб-приложением ASP.NET, а не WCF / WPF ... Я заметил много сообщений для WCF / WPF, когда искал INotifyPropertyChanged, поэтому просто хотел уточнить.

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Если вы делаете это только один раз в этом классе, я бы не возражал ввести INotifyPropertyChanged, поскольку вам нужно было бы сделать уведомление в вашем установщике для FilterByMID, а затем подключить обработчик событий, в котором вы ' d обновить другое свойство.

Однако, если у вас есть несколько классов и экземпляров, которым необходимо наблюдать изменения в свойствах друг друга, это может быть более подходящим способом.

Есть также некоторые фреймворки, которые интересны в этом отношении. Некоторыми примерами являются Reactive Extensions, Rx.NET и (построенный на первом) Reactive UI, в котором есть компонент, подходящий не только для программирования пользовательского интерфейса.

1 голос
/ 31 августа 2011

Вам просто нужно очистить поле в FilterByMyID установщике.

INotifyPropertyChanged позволяет уведомить кого-то еще об изменении свойства.
Использование его непосредственно в вашемкласс просто сделает ваш код более сложным.

...