如何在使用 NotifyPropertyWeaver 时获取 OnPropertyChange 事件

本文关键字:获取 OnPropertyChange 事件 NotifyPropertyWeaver | 更新日期: 2024-11-03 16:46:17

我使用 NotifyPropertyWeaverMsBuildTask 来处理自动属性的 NotifyPropertyChanged。我知道当属性值更改时,OnPropertyChanged() 方法会上升。但是当这种方法被称为属性价值时,就会改变,旧价值就会丢失。有什么方法可以获得旧价值吗?

坦克斯。

如何在使用 NotifyPropertyWeaver 时获取 OnPropertyChange 事件

如果你想

OnPropertyChanged中使用旧值,那就这样写

public void OnPropertyChanged(string propertyName, object before, object after)

然后,如果您的代码看起来像这样

public class Person : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public string Name { get; set; }
    public void OnPropertyChanged(string propertyName, object before, object after)
    {
        // do something with before/after
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

这将被注入

public class Person : INotifyPropertyChanged
{
    private string name;
    public event PropertyChangedEventHandler PropertyChanged;
    public string Name
    {
        get { return name; }
        set
        {
            object before = Name;
            name = value;
            OnPropertyChanged("Name", before, Name);
        }
    }
    public void OnPropertyChanged(string propertyName, object before, object after)
    {            
        // do something with before/after
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

更多信息请点击此处 https://github.com/SimonCropp/NotifyPropertyWeaver/wiki/BeforeAfter

这符合您的要求吗?

INotifyPropertyChanged不提供

捕获属性先前值的方法;您必须实现自己的值。