使用属性是否可以在属性更改时自动触发事件?

4

我经常写下这段代码:

    private int _operationalPlan;
    public int OperationalPlan
    {
        get
        {
            return _operationalPlan;
        }
        set
        {
            _operationalPlan = value;
            RaisePropertyChanged();
        }
    }

    private void RaisePropertyChanged()
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new
                                      PropertyChangedEventArgs("PlansSelected"));
        }
    }

我想知道是否可能编写一个属性,将其添加到属性中以自动触发事件。例如,类似于以下内容:
```html

我在想是否可能编写一个属性,将其添加到属性中以自动触发事件。例如,类似于以下内容:

```
[RaiseOnSet("ProperyChanged", "PropertyChangedEventArgs", "PlansSelected")]
public int OperationalPlan
{
    get
    {
        return _operationalPlan;
    }
    set
    {
        _operationalPlan = value;
        RaisePropertyChanged();
    }
}

在我开始尝试实现之前,我想知道:

  • 这个功能在 .net 框架中吗?
  • 有人尝试过这个功能吗?
  • 如果可以实现吗?
  • 是否需要避免任何死胡同?
2个回答

5
要实现这一点,您需要一个.NET的AOP框架,例如PostSharpAOP.NET

0
如果你准备使用一个辅助类来包装属性值,那么你可以这样做。但这意味着任何访问该属性的客户端都需要解包该值。
另一种方法是使用辅助类型,例如 WPF 和 WF 使用(不同的)DependencyProperty。但你不会得到自动实现的属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接