これは、イベントの標準パターンです。
class YourControl {
public event EventHandler Success;
protected void OnSuccess() {
if(this.Success != null)
this.Success(this, EventArgs.Empty);
}
}
Success は、他のイベントと適切に統合するための EventHandler 型であるため、一般的なイベント ハンドラー (汎用ログ機能など) をサブスクライブできます。このイベントは、OnSuccess() を呼び出すことによって、コントロールとその子のどこでも簡単にトリガーできます。
さらに情報を追加して、イベントをカスタマイズすることもできます。
class YourControl {
public class YourControlEventArgs: EventArgs {
public TimeSpan Elapsed;
public YourControlEventArgs(TimeSpan t) {
this.Elapsed = t;
}
}
public event EventHandler<YourControlEventArgs> Success;
protected void OnSuccess(TimeSpan t) {
if(this.Success != null)
this.Success(this, new YourControlEventArgs(t));
}
}
上記のように、特定のクラスは単純な EventArgs を拡張して .NET の残りの部分と統合するイベントの詳細を保持します。