通知派生 类 关于 属性 的变化

Notify derived classes about property changes

在我的应用程序中,我有一个定义 属性 的基 class。然后我创建了一些 classes A、B 和 C,它们继承自基础 class。

public class BaseClass {
    private static _prop;

    public PropType Prop {
        get { return _prop; }
        set {
            _prop = value;
            NotifyPropertyChanged("Prop");
        }
    }

    public BaseClass() {}
}

public class A : BaseClass {
    public A() {}

    private void someMethod() {
        Prop = new PropType();
    }
}

在派生的 classes 中,我设置 属性 影响其他派生的 classes B 和 C 的基础属性 class 的值。我想要什么要做的是通知所有派生的 classes 一个 属性 已经改变。我该怎么做?

提前致谢。

编辑 根据sehe的评论。

好的,我什至找到了一个似乎有效的解决方案。我将基础 class 中的 Prop-属性 定义为静态 属性。在派生 classes 的构造函数中,我向基础 class 的 PropertyChanged 事件注册了一个静态事件处理程序。代码现在看起来像这样:

public abstract class BaseClass {
    private static _prop;
    static event PropertyChangedEventHandler PropertyChanged;

    private static void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(null, new PropertyChangedEventArgs(propertyName));
        }
    }

    public static PropType Prop {
        get { return _prop; }
        set {
            _prop = value;
            NotifyPropertyChanged("Prop");
        }
    }

    public BaseClass() {}

    protected abstract void BaseVM_PropertyChanged(object sender, PropertyChangedEventArgs e);
}

public class A : BaseClass {
    public A() {
        base.PropertyChanged += BaseVM_PropertyChanged;
    }

    protected override void BaseVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        // react on property changes here
    }
    private void someMethod() {
        Prop = new PropType();
    }
}

请注意,您必须在 BaseClass 中实现静态 PropertyChanged 事件和相应的静态 NotifyPropertyChanged 方法,无论 BaseClass 是否派生自另一个已经实现了 INotifyPropertyChanged 的​​基础 class。