2011-08-31 383 views
1

我有一个具有两个属性如何在属性值更改时更新从属属性?

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值发生改变时刷新辈成员名单。我知道我可以在更新FilterByMID的值之前设置this.ChildMember = null,但我想知道这是否是一个使用INotifyPropertyChanged或者更好的方法的好地方?任何帮助,将不胜感激。

PS:GetMembers()方法来检查的情况下,0和-ve值逻辑,则困扰着你:)

PS:这个类生活在一个类库,而是使用ASP.NET的WebApplication不是WCF/WPF ...当我搜索INotifyPropertyChanged时,我注意到很多WCF/WPF的帖子,所以只是想澄清一下。

回答

2

如果你只在这个类中做这一次,我不会介意带来INotifyPropertyChanged,你必须使你的二传手的通知FilterByMID,然后线了一个事件处理程序中,你会更新其他财产。

但是,如果您有多个类和需要观察对方的属性变化的情况下,它可能是一个更合适的方式。

还有一些框架在这方面很有趣。一些例子是Reactive Extensions,Rx.NET和(构建于前者)Reactive UI,它具有一个不仅适用于用户界面编程的组件。

+0

我想你的意思是,“我不会_suggest_引入..”? – ladenedge

+0

啊,的确如此。我的大脑在另一种情况下使用_mind_,即“不介意那样”。感谢您指出这一点,这是一个负面的东西:) – lbergnehr

+0

我只需要它一次。谢谢! – Robert

1

您应该清除FilterByMyID设置器中的字段。

INotifyPropertyChanged允许您通知其他人属性发生变化。
在你的课堂上直接使用它会让你的代码更加复杂。

+0

有道理,谢谢澄清! – Robert