实现财产变更自动通知的最简单方法

Pat*_*Pat 28 .net aop inotifypropertychanged

我知道有一些解决方案用于实现INotifyPropertyChanged,但它们都不是那么简单:引用这个库,创建/添加这个属性,完成(我在想这里是面向方面的编程).有谁知道一个非常简单的方法来做到这一点?如果解决方案是免费的,奖励积分.

以下是一些相关链接(其中没有一个提供足够简单的答案):

Sim*_*mon 31

试试这个 https://github.com/Fody/PropertyChanged

它将编织实现INotifyPropertyChanged的所有类型属性,甚至可以处理依赖项.

你的守则

public class Person : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    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)

什么被编译

public class Person : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    private string givenNames;
    public string GivenNames
    {
        get { return givenNames; }
        set
        {
            if (value != givenNames)
            {
                givenNames = value;
                OnPropertyChanged("GivenNames");
                OnPropertyChanged("FullName");
            }
        }
    }

    private string familyName;
    public string FamilyName
    {
        get { return familyName; }
        set 
        {
            if (value != familyName)
            {
                familyName = value;
                OnPropertyChanged("FamilyName");
                OnPropertyChanged("FullName");
            }
        }
    }

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

    public void OnPropertyChanged(string propertyName)
    {
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propertyName));    
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用属性进行更精细的控制.

  • [NotifyPropertyWeaver已弃用](https://github.com/Fody/PropertyChanged/wiki/ConvertingFromNotifyPropertyWeaver).作者建议转到[Fody + PropertyChanged](https://github.com/Fody/PropertyChanged) (2认同)