继承基类实现接口INotifyPropertyChanged可以让子类使用它

mHe*_*pMe 0 .net c# wpf

我有一个绑定到ObservableCollection的数据网格.我想知道什么时候改变房产.我在同一个应用程序中有一个类似的数据网格,我有这个工作.但是,此数据网格绑定到从另一个类继承的类.

所以下面是一个简单的代码片段.

在我的孩子,我必须实现INotifyPropertyChanged接口,虽然这对我来说似乎有点痛苦,并没有真正利用继承.我可以简单地将OnPropertyChanged公开或者是错误的吗?

基类

class Animal : INotifyPropertyChanged
{
     public int Age
     { 
         get 
         { return _age;}
         set 
         { 
            _age = value;
            OnPropertyChanged("Age");
         }
     }

     int _age

     public event PropertyChangedEventHandler PropertyChanged;

        void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

}
Run Code Online (Sandbox Code Playgroud)

儿童班

class Dog : Animal
{
    public bool Fleas
     { 
         get 
         { return _fleas;}
         set 
         { 
            _fleas = value;
         }
     }

     int _fleas

}
Run Code Online (Sandbox Code Playgroud)

Tea*_*Dev 5

protected 可能是你想要的,但一般来说,是的.

你经常发现的一件事,例如在MVVM框架如Caliburn.Micro中,有一个像PropertyChangedBase这样的抽象类只有简单的实现INotifyPropertyChanged.

public abstract class PropertyChangedBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是,所有想要利用它的类最终都必须继承PropertyChangedBase,这可能并不总是希望或可能的.