1

私は次のことをしようとしています。

var handler = e => { handle(); item.Unbind("event", this); }
item.Bind("event", handler);

JavaScript ではこれは適切に機能しますが、ScriptSharp は JavaScript の this を、そのコードを含むメソッドを含むクラスのインスタンスへの参照に置き換えます。この動作を回避し、ラムダ自体からラムダへの参照を取得するにはどうすればよいですか?

4

1 に答える 1

0

これを行う方法は次のとおりです (Bind が Action の署名を持つデリゲートを受け取ると仮定します)。

SomeObject item = ...;
Action handler = null;

handler = delegate() {
   // do something ... eg. call Handle();
   item.Unbind("event", handler);
};
item.Bind("event", handler);

また、この質問を参照してください:スクリプト# で関数を記述して、それが定義されているクラスのインスタンスだけでなく、任意のオブジェクトで呼び出されるようにする方法は? スクリプトで「this」参照を生成するコードを作成するためのテクニック。

于 2012-11-06T20:17:25.403 に答える