使用一个类监视其他类

时间:2012-11-21 01:14:22

标签: c# oop design-patterns

我有一个名为DataClass的类。这个类负责在数据库中保存信息,在这个类中有一些保存和读取数据库的方法,除了这个类,我还有其他类,叫做HTMLEditor,QueryBuilder,EmailSending,InforDetails。 我需要通过我的数据类来监听其他类,只要他们的信息被更改,我的Dataclass就会被通知保存这些信息。 我知道有一种设计模式被称为观察者设计模式,有了这种设计模式,其他类(观察者)正在监听一个类(主体),任何时候主体的状态都会被改变,然后通知其他观察者。

我应该为这个问题做些什么?这种情况有任何设计模式吗?

2 个答案:

答案 0 :(得分: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这样的控件会自动注册。

答案 1 :(得分:1)

INotifyPropertyChanged界面可能就是你所追求的:

见这里:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

您基本上订阅了其他类中的事件,并且当属性发生更改时,这些类会引发事件。

此外,这个问题的答案非常酷:Automatically INotifyPropertyChanged