0

我有一个名为 DataClass 的类。这个类负责将信息保存在数据库中,在这个类中有一些保存和读取数据库的方法,除了这个类,我还有其他类,称为 HTMLEditor、QueryBuilder、EmailSending、InforDetails。我需要通过我的数据类收听其他类,只要他们的信息发生更改,我的数据类就会被通知保存这些信息。我知道有一种设计模式称为观察者设计模式,使用这种设计模式,其他类(观察者)正在监听一个类(主题),只要主题的状态发生变化,就会通知其他观察者。

这个问题我该怎么办?这种情况有什么设计模式吗?

4

2 回答 2

2

我认为您寻求的界面 if INotifyPropertyChanged

Microsoft 文档: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 这样的控件会自动注册它们自己。

于 2012-11-21T01:21:15.020 回答
1

INotifyPropertyChanged界面可能是您所追求的:

请参阅此处:http: //msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

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

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

于 2012-11-21T01:18:50.867 回答