gpt4 book ai didi

c# - 实现 INotifyPropertyChanged 时属性 Getters 和 Setters?

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:17 25 4
gpt4 key购买 nike

我正在尝试为很多类实现 INotifyPropertyChanged,并且这些类中的每一个都有很多很多属性。我一直在关注这个MSDN documentation有关如何实现 INofifyPropertyChanged 的​​信息,但在类具有许多属性的情况下,它们的说明似乎并不实用。

目前我的大部分属性都使用简写:

public DateTime? DateClosed { get; set; }

但是文档说我需要在每个 setter 方法中添加以下内容:

// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("DateClosed");

这意味着我需要为 get 方法声明一个主体并声明私有(private)变量来处理属性的实际获取和设置。像这样:

private DateTime? _dateOfIncident = null;
public DateTime? DateClosed
{
get { return _dateOfIncident; }
set
{
_dateOfIncident= value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("DateClosed");
}
}

有人知道解决这个问题的方法吗?

最佳答案

可以轻松更改一些类来实现 INotifyPropertyChanged。但是由于您声明您有很多具有很多属性的类,手动或什至使用模板来完成这件事确实是一个负担。

您真正需要的是一个可以为您完成这些工作的工具,所以我向您介绍 Fody它是 NotifyPropertyChanged 插件。 Fody 所做的是在编译时在代码之间编织一些额外的代码。您唯一需要做的就是在要实现的类上添加一个属性 INotifyPropertyChanged,其余的都为您完成。

[ImplementPropertyChanged]
public class Person
{
public string GivenNames { get; set; }
public string FamilyName { get; set; }

public string FullName
{
get
{
return string.Format("{0} {1}", GivenNames, FamilyName);
}
}
}

关于c# - 实现 INotifyPropertyChanged 时属性 Getters 和 Setters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33394415/

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