请帮助我实现一个事件,处理程序可以取消它. public class BuildStartEventArgs : EventArgs{ public bool Cancel { get; set; }}class Foo{ public event EventHandlerBuildStartEventArgs BuildStart; private void Bar() { // build sta
public class BuildStartEventArgs : EventArgs
{
public bool Cancel { get; set; }
}
class Foo
{
public event EventHandler<BuildStartEventArgs> BuildStart;
private void Bar()
{
// build started
OnBuildStart(new BuildStartEventArgs());
// how to catch cancellation?
}
private void OnBuildStart(BuildStartEventArgs e)
{
if (this.BuildStart != null)
{
this.BuildStart(this, e);
}
}
}
您需要修改此代码:
private void Bar()
{
// build started
OnBuildStart(new BuildStartEventArgs());
// how to catch cancellation?
}
这样的事情:
private void Bar()
{
var e = new BuildStartEventArgs();
OnBuildStart(e);
if (!e.Cancel) {
// Do build
}
}
.NET中的类具有引用语义,因此您可以看到对事件参数所做的任何更改引用.
