Как да получа достъп до JavaScript от ScriptSharp?

Опитвам се да направя следното.

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

В JavaScript това би работило правилно, но ScriptSharp замества това на JavaScript с препратка към екземпляра на класа, съдържащ метод с този код. Как да избегна това поведение и да получа препратка към ламбда от самата ламбда?


person LOST    schedule 30.10.2012    source източник


Отговори (1)


Ето как можете да го направите (ако приемем, че Bind вземе делегат със сигнатурата на действие):

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

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

Вижте също този въпрос: Как да напиша функция в скрипт #, която да бъде извикана с всеки обект като this, а не само с екземпляра на класа, в който е дефиниран? за техника за писане на код, който генерира препратка "this" в скрипта.

person Nikhil Kothari    schedule 06.11.2012