答えて
すべてのイベントは、Delegate
を継承するMulticastDelegate
から継承するEventHandler
から継承します。ときどき(または私はむしろほとんどの時間を言うでしょう)独自のカスタムデリゲートイベントを宣言する必要はありません。既存のデリゲートは、イベントのシグネチャと一致する限り使用できます。 .NET Framework 2.0にEventHandler<T>
が導入されたことで、カスタムイベントデリゲートの必要性はほとんどなくなりました(フレームワークのイベント設計に従う限り)。だから、やって次
// declare an event with a custom delegate type
public delegate void MyCustomEventHandler(object sender, EventArgs e);
public event MyCustomEventHandler SomeCustomEvent;
が...これと同等です:
// declare an event with an existing delegate type
public event EventHandler SomeCustomEvent;
あなたはいくつかのカスタムEventArgs
クラスは、あなたの代わりにあなたのイベントのための一般的なEventHandler<T>
を使用することができている必要があります
class MyCustomEventArgs : EventArgs
{
// you custom stuff here
}
public event EventHandler<MyCustomEventArgs> SomeCustomEvent;
他の誰か(あなたのasp.netページやいくつかのasp.net Webコントロール)によって作成されたイベントに登録している場合は、代理人を指定する必要はありません。デリゲートの署名と一致するメソッドを提供するだけです。
イベントを作成する担当者が代理人を提供する必要があります。加入者は方法を提供するだけである。
ASP.NETは、ページの定義内でAutoEventWireup="true"
を指定した場合、コンパイル時にイベントを「結びつける」ため、混乱を招きます。
.NETのイベントはデリゲートで実装されています。あなたの最初のリンクのページから :
イベントが にクラスのオブジェクトを可能にしますが、彼らがおそらく がに反応しなければならないことが起こった 何か他のオブジェクトに通知します。 [.NET]のイベントは、パブリッシャー/サブスクライバーモデルの に基づいています。イベントを実装するクラス は、そのイベントのパブリッシャと呼ばれる です。 サブスクライバークラスは パブリッシュされたイベントに の適切なイベントハンドラーを登録して、サブスクライブすることができます。
...
デリゲート型は がイベントに登録することができるイベントハンドラの 署名を決定します。
したがって、パブリッシングクラスは、サブスクライブするクラスが実装する必要があるデリゲートを定義します。イベントが発生すると、サブスクライブするクラスのメソッドがデリゲートを介して呼び出されます。また、イベントを処理するメソッドをイベントハンドラと呼びます。イベントは、イベントを公開するクラスのプロパティです。 イベントは、パブリッシュ/サブスクライブのイディオムを維持するように設計されています。
- 1. Cのイベントと代理人
- 2. インターフェイスの代理人とイベント?
- 3. プロパティの相違代理人とイベント
- 4. サブビューの代理人
- 5. TextFieldの代理人
- 6. Xamarin.iOSの代理人
- 7. シングルトンオブジェクトの代理人
- 8. 別のビューに代理人PickerViewの代理人
- 9. 代理人または代理人またはその他
- 10. VB.NETの代理人およびマルチキャスト代理人
- 11. カスタム代理人
- 12. UIViewControllers、代理人
- 13. 2人の代理人を持つUINavigationController?
- 14. イベントを処理するために代理人を使用
- 15. vueの代理イベント
- 16. C#コールバックの代理人
- 17. Objective-Cの代理人クエリ
- 18. ImageMagickのfftw3代理人
- 19. UISearchcontrollerキャンセルボタンの代理人
- 20. Objective Cメインアプリケーションウィンドウの代理人
- 21. SSCollectionView代理人の問題
- 22. where句の代理人
- 23. サブクラスの代理人にアクセス
- 24. あなたは共有アプリケーションの代理人ですか?
- 25. 非オプション代理人のために弱いvs無用
- 26. iOS Swift代理人
- 27. スウィフトプロトコル代理人リターンネイル
- 28. C#と代理人
- 29. C#:代理人 - Java:ActionListener
- 30. 代理人署名/汎用代理人ですか?
ありがとうございました – markiz
おっと、私はあなたの間違いでupvotedバックアップを投票しました。 –