2015-08-17 76 views
0

我們可以通過在方法或屬性上指定的C#屬性來進行事件發佈和訂閱嗎?通過C#屬性發布和訂閱事件

如果房地產的用途改變..然後我們需要觸發一個事件...
[FirePropertyChangedEvent] SomeProperty

+0

一句話..沒有。你必須在對象上創建一個單獨的事件,並在屬性的setter中激發它。就像在'INotifyPropertyChanged'模型中一樣。 – Baldrick

+0

我知道INotifypropertychanged我試圖做這樣的事情....我有很多屬性..他們必須訂閱甚至通知。我想使用attirbutes而不是委託signautre + =。我們可以用C#自定義屬性來做到這一點.... [IwillFireEvent] SomeProperty [IwillSubecribetoEvent] SomeOtherProperty。事件將在一組屬性上觸發...並且訂閱者將設置其值。 – Karthik

回答

0

我已經回答了類似的問題這一個,所以生病複製我的答案:

可以說你使用的是當地的「速度」的變量,它每次你想主要的「速度」變量更新更新...

public class SpeedHolder 
{ 
    private float _speed; 

    public event Action<float> OnSpeedChange; 

    public float Speed 
    { 
     get { return _speed; } 
     set { SetSpeed(value); } 
    } 

    public SetSpeed(float value) 
    { 
     _speed = value; 
     if(OnSpeedChange != null) 
      OnSpeedChange(_speed); 
    } 
} 
現在

在每一個「構造」電子商務法它採用了高速浮點型變量非常腳本,你需要加入這行:SpeedHolder.OnSpeedChange += ChangeSpeed;,有一個方法像這樣的:

public void ChangeSpeed(value) 
{ 
    speed = value; 
} 
+0

我有很多屬性..他們必須訂閱甚至通知。我想使用attirbutes而不是委託signautre + =。我們可以用C#自定義屬性來做到這一點.... [IwillFireEvent] SomeProperty [IwillSubecribetoEvent] SomeOtherProperty。 – Karthik

+0

我發現C#有C#事件屬性,但我想寫我自己的..所以我正在尋找幫助我們如何使用C#自定義屬性來做到這一點。 – Karthik