1

我正在尝试执行以下操作。

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

在 JavaScript 中 this 可以正常工作,但 ScriptSharp 将 JavaScript 的 this 替换为引用包含该代码的方法的类的实例。如何避免这种行为并从 lambda 本身获取对 lambda 的引用?

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);

另外,请参阅这个问题:How to write a function in script# to be called with any object as this,而不仅仅是定义它的类的实例?用于编写在脚本中生成“this”引用的代码的技术。

于 2012-11-06T20:17:25.403 回答