12

私はの実装を見ていました

Observable.FromEvent<TEventHandler, TEventHandlerArgs>(add, remove)

そして私はそれがどのように機能するかを理解するのに苦労しています。TEventHandlerが標準であるとしましょう。

public delegate void EventHandler(object sender, EventArgs e);

次に、私を困惑させているコードは次のとおりです。

TEventHandler d = (TEventHandler) Delegate.CreateDelegate(
    typeof (TEventHandler),
    (object) new Action<EventArgs>(observer.OnNext),
    typeof (Action<EventArgs>).GetMethod("Invoke"));

(nbこのジェネリックコードをこの特定のサンプルインスタンスに特化しました。)

CreateDelegateが、アクションの署名の呼び出しメソッド(args)にバインドされた署名のデリゲート(obj、args)を作成しているのはどうしてですか?objはどこに行くのですか?

アクションにオープンなデリゲートを持っているような気がします。CreateDelegateから「this」を「firstArguemnt」に強制し、引数を通過させています。もしそうなら、ちょっと汚い感じですか?

4

1 に答える 1