gpt4 book ai didi

c# - 自动 INotifyPropertyChanged

转载 作者:IT王子 更新时间:2023-10-29 03:46:22 28 4
gpt4 key购买 nike

有没有什么方法可以自动获得类中属性更改的通知,而不必在每个 setter 中都编写 OnPropertyChanged? (我有数百个属性,我想知道它们是否已更改)。


安东建议 dynamic proxies .实际上,我过去曾将“CaSTLe”库用于类似的事情,虽然它确实减少了我必须编写的代码量,但它使我的程序启动时间 (ymmv) 增加了大约 30 秒——因为它是运行时解决方案。

我想知道是否有编译时解决方案,也许使用编译时属性...


Slashene 和 TcKs 给出了生成重复代码的建议 - 不幸的是,并非我所有的属性都是 m_Value = value 的简单情况 - 很多属性在 setter 中都有自定义代码,因此片段和 xml 中的千篇一律的代码不是对于我的项目来说也确实可行。

最佳答案

编辑: NotifyPropertyWeaver 的作者已弃用该工具,转而使用更通用的 Fody . (migration guide 可供从织布工转移到福迪的人使用。)


我在项目中使用的一个非常方便的工具是 Notify Property Weaver Fody .

它将自身安装为项目中的一个构建步骤,并在编译期间注入(inject)引发 PropertyChanged 事件的代码。

使属性引发 PropertyChanged 是通过放置 special attributes 来完成的在他们身上:

[ImplementPropertyChanged]
public string MyProperty { get; set; }

作为奖励,您还可以为依赖于其他属性的属性指定关系

[ImplementPropertyChanged]
public double Radius { get; set; }

[DependsOn("Radius")]
public double Area
{
get { return Radius * Radius * Math.PI; }
}

关于c# - 自动 INotifyPropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com