[英]How to raise an event when a new handler is assigned?
我正在尝试复制现有.NET XNA类事件提供的功能: NetworkSession.GamerJoined 。
将事件分配给事件后,可以立即引发该事件,例如:
myNetworkSession.GamerJoined += GamerJoinedEventHandler;
void GamerJoinedEventHandler(object sender, GamerJoinedEventArgs e)
{
// If you put a beakpoint on the assignment line above and another here
// this handler is called during the assignment.
}
如果我使用GamerJoined
事件编写自己的NetworkSession
类,该如何实现?
是的,您可以使用add
contextual关键字执行此操作。
当您有一行时:
public event EventHandler<GamerJoinedEventArgs> GamerJoined;
这是用于以下方面的语法糖:
public event EventHandler<GamerJoinedEventArgs> GamerJoined
{
add
{
this.gamerJoined += (EventHandler<GamerJoinedEventArgs>)Delegate.Combine(this.gamerJoined, value);
}
remove
{
this.gamerJoined -= (EventHandler<GamerJoinedEventArgs>)Delegate.Remove(this.gamerJoined, value);
}
}
其中gamerJoined
是该事件的私人支持字段。 因此,您可以编写自己的add
来调用处理程序,例如
public event EventHandler<GamerJoinedEventArgs> GamerJoined
{
add
{
this.gamerJoined += (EventHandler<GamerJoinedEventArgs>)Delegate.Combine(this.gamerJoined, value);
value(this, new GamerJoinedEventArgs(myGamer));
}
remove
{
this.gamerJoined -= (EventHandler<GamerJoinedEventArgs>)Delegate.Remove(this.gamerJoined, value);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.