使用PostSharp NotifyPropertyChanged,如何挂钩OnPropertyChanged事件

时间:2014-01-21 20:43:32

标签: inotifypropertychanged postsharp

我正在尝试使用OnPropertyChanged事件,以便将我的类标记为已修改。

[NotifyPropertyChanged]    
Public Class Employee
{
    private bool hasChange;    
    public string FirstName { get; set; }
    public string LastName { get; set; }
    private static void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        hasChange = true;
    }
}

OnPropertyChanged很可能是错误的,但希望您能了解我想要做的事情?

谢谢,

詹姆斯

1 个答案:

答案 0 :(得分:1)

您需要提供自己的OnPropertyChanged方法,其签名与PostSharp生成的签名相同。因此,PostSharp将不会生成该方法,而是使用您的实现。这也意味着您需要自己在方法中引发事件。

[NotifyPropertyChanged]    
public class Employee : INotifyPropertyChanged
{
    private bool hasChange;    
    public string FirstName { get; set; }
    public string LastName { get; set; }


    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        hasChange = true;

        PropertyChangedEventHandler handler = this.PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}