[英]How to use State Accessors to get properties in Bot Framework
[英]What exactly is the use of event handler accessors/properties?
我有一行接口:
event EventHandler<MagazineEventArgs> MagazineChangedEvent;
當我實現接口時,Visual Studio會為我生成以下模板:
event EventHandler<MagazineEventArgs> IMagazineConfigView.MagazineChangedEvent
{
add { throw new NotImplementedException(); }
remove { throw new NotImplementedException(); }
}
但是,我不知道我應該如何充分利用這些屬性。
通常,您可以只使用類似字段的事件 ,例如,只需聲明:
public event EventHandler<MagazineEventArgs> MagazineChangedEvent;
這大致等於聲明一個私有委托字段和訂閱者並取消訂閱的訪問者:
private EventHandler<MagazineEventArgs> magazineChanged;
public event EventHandler<MagazineEventArgs> MagazineChangedEvent
{
add { magazineChanged += value; }
remove { magazineChanged -= value; }
}
...但是類字段事件語法提供了更多的線程安全性。 線程安全性的確切性質取決於您使用的C#版本。 從C#4開始,它們比以前更加干凈-有關更多詳細信息,請參閱Chris Burrows的博客文章( 第1 部分 , 第2 部分 , 第3部分 , 后記 )。
通常,您只需要在做一些完全不同的事情時自己實現事件即可-例如,將事件訂閱鏈接到另一個基礎事件,或者使用EventHandlerList
作為有效地存儲各種事件的稀疏訂閱的方式。
了解事件和普通委托字段之間的區別非常重要-類似於屬性和字段之間的區別,盡管由於事件僅具有“訂閱和取消訂閱”操作,而調用者無法提出它們或確定其他訂戶的方式,所以它的細微差別會更大。 有關更多信息,請參見我關於該主題的文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.