Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NotifyPropertyWeaver时如何获取OnPropertyChange事件?_C#_Inotifypropertychanged_Automatic Properties - Fatal编程技术网

C# 使用NotifyPropertyWeaver时如何获取OnPropertyChange事件?

C# 使用NotifyPropertyWeaver时如何获取OnPropertyChange事件?,c#,inotifypropertychanged,automatic-properties,C#,Inotifypropertychanged,Automatic Properties,我使用NotifyPropertyWeaverMsBuildTask为自动属性处理NotifyPropertyChanged。我知道OnPropertyChanged()方法在属性值更改时会上升。但当这个方法被调用时,属性的值被改变,旧的值丢失。有没有办法得到旧的价值 tanx.INotifyPropertyChanged不提供获取属性先前值的方法;您必须实现自己的功能。INotifyPropertyChanged不提供获取属性先前值的方法;您必须实现自己的。如果您想在OnPropertyCha

我使用NotifyPropertyWeaverMsBuildTask为自动属性处理NotifyPropertyChanged。我知道OnPropertyChanged()方法在属性值更改时会上升。但当这个方法被调用时,属性的值被改变,旧的值丢失。有没有办法得到旧的价值


tanx.

INotifyPropertyChanged
不提供获取属性先前值的方法;您必须实现自己的功能。

INotifyPropertyChanged
不提供获取属性先前值的方法;您必须实现自己的。

如果您想在
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 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));
        }
    }
}
这里有更多信息


这符合您的要求吗?

如果您想在
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 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));
        }
    }
}
这里有更多信息


这符合您的要求吗?

您想将旧值用于什么?您想将旧值用于什么?