Как мне получить доступ к JavaScript из ScriptSharp?

Я пытаюсь сделать следующее.

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

В JavaScript это будет правильно работать, но ScriptSharp заменяет this в 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-not-jus">Как написать функцию в сценарии#, которая будет вызываться с любым объектом, а не только с экземпляром класса, в котором она определена? для метода написания кода, который генерирует ссылку "это" в скрипте.

person Nikhil Kothari    schedule 06.11.2012