如何在属性值更改时更新依赖属性

本文关键字:属性 更新 依赖 | 更新日期: 2023-09-27 18:07:05

我有一个类,它有两个属性

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; }

本质上我需要做的是每次FilterByMID值改变时刷新ChildMember列表。我知道我可以在更新FilterByMID的值之前设置this.ChildMember = null,但我想知道这是否会是使用INotifyPropertyChanged的好地方,或者可能是更好的方法?如有任何帮助,不胜感激。

注:: GetMembers()方法具有检查0和-ve值的逻辑,以防它打扰您:)

注:该类存在于类库中,但由ASP使用。. NET WebApplication不是WCF/WPF…当我搜索INotifyPropertyChanged时,我注意到很多WCF/WPF的帖子,所以只是想澄清一下。

如何在属性值更改时更新依赖属性

如果你只在这门课上这样做一次,我不介意把INotifyPropertyChanged带进来,因为你必须在你的setter中为FilterByMID做通知,然后连接一个事件处理程序,在这个事件处理程序中你会更新其他属性。

然而,如果你有多个类和实例需要观察彼此属性的变化,这可能是一个更合适的方式。

在这方面也有一些有趣的框架。一些例子是响应式扩展,Rx。. NET,以及(建立在前者基础上的)Reactive UI,它不仅有一个适合用户界面编程的组件。

您应该清除FilterByMyID setter中的字段。

INotifyPropertyChanged允许您通知其他人属性更改。
在类中直接使用它只会使代码更加复杂。