2009-12-29 26 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接口。