![](/img/trans.png)
[英]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.