gpt4 book ai didi

.net - 实现属性更改自动通知的最简单方法

转载 作者:行者123 更新时间:2023-12-03 09:56:38 24 4
gpt4 key购买 nike

我知道有一些解决方案可以实现 INotifyPropertyChanged,但没有一个像:引用这个库,创建/添加这个属性,完成(我在这里考虑面向方面编程)。有谁知道一个非常简单的方法来做到这一点?如果解决方案是免费的,则加分。

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

  • Aspect Examples (INotifyPropertyChanged via aspects)
  • LinFu
  • INotifyPropertyChanged auto wiring or how to get rid of redundant code
  • INotifyPropertyChanged With Unity Interception AOP
  • 最佳答案

    尝试这个
    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);
    }
    }

    }

    什么被编译
    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));
    }
    }
    }

    或者您可以使用属性进行更细粒度的控制。

    关于.net - 实现属性更改自动通知的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716400/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com