Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承基类实现接口INotifyPropertyChanged子类可以使用它吗_C#_.net_Wpf - Fatal编程技术网

C# 继承基类实现接口INotifyPropertyChanged子类可以使用它吗

C# 继承基类实现接口INotifyPropertyChanged子类可以使用它吗,c#,.net,wpf,C#,.net,Wpf,我有一个绑定到ObservableCollection的datagrid。我想知道什么时候换房子。在同一个应用程序中,我有一个类似的datagrid,在这里我可以工作。但是,此datagrid绑定到从另一个类继承的类 下面是一个简单的代码片段 在child中,我必须实现INotifyPropertyChanged接口,尽管这对我来说有点痛苦,而且没有真正利用继承。我可以简单地将OnPropertyChanged公之于众,还是这样做不对 基类 class Animal : INotifyPrope

我有一个绑定到ObservableCollection的datagrid。我想知道什么时候换房子。在同一个应用程序中,我有一个类似的datagrid,在这里我可以工作。但是,此datagrid绑定到从另一个类继承的类

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

在child中,我必须实现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));
        }

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

     int _fleas

}
儿童班

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));
        }

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

     int _fleas

}

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

例如,在Caliburn.Micro等MVVM框架中,您经常会发现一个抽象类,如
PropertyChangedBase
,它只有
INotifyPropertyChanged
的简单实现

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

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

这种方法的缺点是,所有想要使用它的类最终都必须继承自
PropertyChangedBase
,这可能并不总是需要或可能的。

受保护的
可能是您想要的,但通常是可以的

例如,在Caliburn.Micro等MVVM框架中,您经常会发现一个抽象类,如
PropertyChangedBase
,它只有
INotifyPropertyChanged
的简单实现

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

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

这种方法的缺点是,所有想要使用它的类最终都必须从
PropertyChangedBase
继承,这可能并不总是需要或可能的。

代码中没有显示继承。。。你还没有包括什么?对不起,狗应该继承动物-更新了我的代码在你的代码中没有显示继承。。。你们还没有包括什么?对不起,狗应该继承动物-更新了我的代码