C# 所有属性上的InotifyProperty已更改

C# 所有属性上的InotifyProperty已更改,c#,C#,考虑到一个具有大量属性的类,我想实现一个脏标志(以便知道是否应该更新数据库中的值) 是否有任何方法可以在所有属性上提升PropertyChanged,而不必手动在setter中查看和提取它 编辑以清除某些内容:我确实浏览了此处链接的线程,发现了一些内容,但不幸的是,它们不适合我的需要。我真的不需要发送事件,我只需要翻转一面旗帜。而且,这个线程已经很老了,我希望C#7中可能会出现一些有用的东西,我在变更日志中错过了这些东西 为什么我不去手动操作呢?嗯,我可能不得不这么做。但我必须声明“隐藏”变量,

考虑到一个具有大量属性的类,我想实现一个脏标志(以便知道是否应该更新数据库中的值)

是否有任何方法可以在所有属性上提升
PropertyChanged
,而不必手动在setter中查看和提取它

编辑以清除某些内容:我确实浏览了此处链接的线程,发现了一些内容,但不幸的是,它们不适合我的需要。我真的不需要发送事件,我只需要翻转一面旗帜。而且,这个线程已经很老了,我希望C#7中可能会出现一些有用的东西,我在变更日志中错过了这些东西

为什么我不去手动操作呢?嗯,我可能不得不这么做。但我必须声明“隐藏”变量,自己管理代码,我希望MS能帮上忙,也许像在另一个主题中建议的那样

公共类型名称{get;set;notify{()=>IsDirty=true;}}


这会有很大帮助(忽略这样一个事实,即它会要求我声明get和set,因为它们是抽象的。

您可以这样做,但也需要做很多工作。创建一个属性并在这些属性上使用它。在ViewModel的基类中

将实现INotifyPropertyChanged

您在其构造函数中注册PropertyChanged事件,并通过反射检查更改的属性上是否有您的属性


然后相应地设置IsDirty。

添加一个如下所示的方法:

public void Test()
{
     if(PropertyChanged != null)
         PropertyChanged(new PropertyChangedEventArgs(null));
}
将null或空字符串作为属性名传递给使用者,告诉使用者所有属性都已更改


您可以使用T4生成属性-您只需要一个包含所有属性(可以是CSV、XML、JSON等)的文本文件和一个T4脚本即可将其转换为类。internet上有很多示例:)通常,根据订阅的内容,您可以只传递一个空字符串作为属性名。例如,另一种替代方法可能是面向方面编程