2012-11-21 62 views
0

我有一個名爲DataClass的類。這個類負責保存數據庫中的信息,在這個類中有一些從數據庫中保存和讀取的方法,除了這個類外,我還有其他的類叫做HTMLEditor,QueryBuilder,EmailSending,InforDetails。 我需要通過我的數據類監聽其他類,每當他們的信息發生變化時,我的Dataclass都會被通知保存這些信息。 我知道有一種設計模式被稱爲觀察者設計模式,有了這種設計模式,其他類(觀察者)正在傾聽一個類(主題),任何時候主題的狀態發生變化,然後通知其他觀察者。用一個類監視其他類

我該怎麼處理這個問題?這種情況有沒有設計模式?

回答

2

我想你如果尋求的INotifyPropertyChanged接口。

Microsoft Documentation: INotifyPropertyChanged

的實現是很簡單的。

在每個屬性set你這樣做:

public bool MyProperty 
{ 
    get { return myField; } 

    set 
    { 
     if (myField != value) 
     { 
      myField= value; 
      NotifyPropertyChanged(); 
     } 
    } 
} 

而且方法和事件:

public event PropertyChangedEventHandler PropertyChanged; 

private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
{ 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

每一個觀察者只需要註冊到該事件,他們得到的反饋時,改變性質和哪一個做了。

另外,像PropertyGrid這樣的一些控件在爲它們提供實現該接口的對象時會自動註冊。

+0

謝謝,您的解決方案在類內工作,我如何將其擴展到其他類? –

+0

@PersianGolf:你的意思是「其他課程」?其他課程,如你不能修改的課程? – LightStriker

+0

在其他類中如果一些屬性發生變化,那麼我的DataClass應該被通知做一些動作,就像保存一樣。 –