Mic*_*ael 5 .net c# inotifypropertychanged winforms
我正在尝试为很多类实现 INotifyPropertyChanged,并且每个类都有很多很多属性。我一直在关注此MSDN 文档以了解如何实现 INofifyPropertyChanged,但它们的说明在类具有许多属性的情况下似乎并不实用。
目前我的大部分属性都使用简写:
public DateTime? DateClosed { get; set; }
Run Code Online (Sandbox Code Playgroud)
但文档说我需要将以下内容添加到每个 setter 方法中:
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("DateClosed");
Run Code Online (Sandbox Code Playgroud)
这意味着我需要为 get 方法声明一个主体,并声明私有变量来处理属性的实际获取和设置。像这样:
private DateTime? _dateOfIncident = null;
public DateTime? DateClosed
{
get { return _dateOfIncident; }
set
{
_dateOfIncident= value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("DateClosed");
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道解决这个问题的方法吗?
可以轻松更改一些类来实现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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |