gpt4 book ai didi

c# - 如何为属性更改通知编写更少的样板?

转载 作者:行者123 更新时间:2023-12-04 11:51:06 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Implementing INotifyPropertyChanged - does a better way exist?

(34 个回答)


11 天前关闭。




我有一个 MVVM-ish 应用程序,它最终得到了一个带有太多属性更改通知的模型。具体来说,我有时会错过一些通知,因为它们太多了。
例如,我最终得到这样的属性:

public string CustomEmail {
get => customEmail;
set
{
customEmail = value;
OnChanged("CustomEmail");
OnChanged("IsSendAllowed");
OnChanged("IsNotFaxEmail");
}
}
有没有更好的组织方式?例如有没有办法标记一个属性 [DependsOn("CustomEmail")] bool IsNotFaxEmail { ... } ?
或者,如果大多数属性都用于绑定(bind),我是否应该全部使用转换器?我宁愿不得到像 {Binding CustomEmail, Converter=EmailIsFaxToElementVisibilityConverter} 这样愚蠢数量的转换器.
我错过了一些更简单的解决方案吗?

最佳答案

我不经常找到这么多依赖项,但我可以概述我所见过的解决方案。
创建一个属性。将其称为 AlsoRaise 属性,该属性采用字符串参数。
你可能会想到一个更好的名字。但我认为dependon 不太正确,因为它是相反的。

[AlsoRaise(nameof(IsSendAllowed))]
[AlsoRaise(nameof(IsNotFaxEmail))]
public string CustomEmail
然后,您有一些东西可以驱动您要为其以及 CustomEmail 引发更改通知的其他属性的列表。
在静态构造函数中,您使用这些属性填充 dictionary 。您迭代公共(public)属性,获取这些属性。
在 OnChanged 中,您可以在该字典中查找您的属性名称,并针对该属性名称以及您找到的任何字符串提出已更改的属性。或者当然没有。
我可能忘记了某些部分,因为我看到了这个实现。

关于c# - 如何为属性更改通知编写更少的样板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69359772/

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