2009-12-29 39 views
0

我有一些我想简化的代码。 下面是代码:使用属性来引发事件

private int id; 
public int Id 
{ 
    get { return id; } 
    set 
    { 
     id = value; 
     base.OnPropertyChanged("Id"); 
    } 
} 

我使用的属性想着只得到:

[RaiseOnPropertyChanged()] 
public int Id { get; set; } 

那怎么可以呢?或者可以使用属性来完成?

+0

请参阅http://stackoverflow.com/questions/488587/whats-the-best-way-to-call-inotifypropertychangeds-propertychanged-event – 2009-12-29 19:30:32

回答

5

唉,你不能在C#本身的范围内做到这一点;你需要在IL层面上操纵事物来获得你想要的东西。但是,您可以使用PostSharp所提供的面向方面的技术来获得所需的结果。

2

您需要探索的最佳选择是使用PostSharp之类的框架进行面向方面编程。

PostSharp将允许您定义在编译期间使用代码模板进行“充实”的属性。他们的网站有几个例子,他们即将发布的主要版本将大大简化与这些类型的场景的工具。

2

您可以使用PostSharp动态实现INotifyPropertyChanged接口。