2008-09-15 3 views
6

私は自分自身が本当に単純な関数(引数を取らずにvoidを返すなど)のために時々代理人を書いていることを知っていて、.NETフレームワークですでに利用可能な定義済みのすべての代理人のリストをコンパイルしたそれら?フレームワークに既に組み込まれている代理人のリストを知っている人はいますか?

私はこのような何かを探しています明確にする:

  • 無効System.AsyncCallback(System.IAsyncResult)
  • int型System.Comparison(TのX、TのY)
  • のボイドシステム。 IO.ErrorEventHandler(オブジェクト、System.Io.ErrorEventArgs)

と開始されない場合

に、のように聞こえますブログ記事のための良いアイデア。

+0

こんにちは。あなたが質問のタイトルをより明確にすることができればもっと良いでしょう。被験者はそれだけでは明確ではない。 –

+0

彼はプレディケートのようなあらかじめ定義された代理人がフレームワークの中にすでにコーディングされていることについて話しています。 –

答えて

7

(T)デリゲートについては、msdnデータベースを参照してください。あなたが始める必要があるList of delegates

ここでは、直接リンクを得ました。

3

私は以前、これらの線に沿ってhereブログに書いています。基本的には、Reflectorを使用して既存のデリゲートがニーズを満たす方法を説明します。

1

ただ、アクション<T>、アクション< T1、T2、...何も(ボイド)返さないメソッドの>代表者、またはのFunc <TResult>、のFunc < T、TResult >、のFunc < T1、アクションを使用します、...、TResult > TResultを返すメソッドの代理人。

これらの代理人は、.net 3.5で新しく追加されました。心に留めておくべき

+0

アクションは.NET 2.0に存在しますが、アクションはありません。 – user169771

2

ことの一つは、あなたがあなたの将来の自己を含め、将来プログラマーに読めるようにコードを記述することです。フレームワークに正しいシグネチャを持つビルトインデリゲートが見つかったとしても、そのデリゲートがコードの目的を隠している場合は、そのデリゲートを使用するのは必ずしも正しいとは限りません。

6ヶ月後には、タイプがの代理人を使用すると、BondMaturationActionは、署名が同じであっても、タイプActionのものよりはるかに明確になります。

0

.NET 2.0以降では、引数を一切持たない場合はEventHandlerを使用し、カスタムデータを提供する場合はEventHandler <T>を使用します(EventArgsから追加データを含むクラスを派生させる必要があります) )。使用するEventArgsがない場合は、EventArgs.Emptyを渡します。

EventArgsは参照型なので、EventHandlerのすべてのインスタンス<T>は同じJITtedコードを使用します。

+0

EventHandlerは、標準のvoid(object、EventArgs)関数シグニチャを想定しています。 – user169771

関連する問題