我正在尝试执行以下操作。
var handler = e => { handle(); item.Unbind("event", this); }
item.Bind("event", handler);
在 JavaScript 中 this 可以正常工作,但 ScriptSharp 将 JavaScript 的 this 替换为引用包含该代码的方法的类的实例。如何避免这种行为并从 lambda 本身获取对 lambda 的引用?
这是你可以做到的(假设 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”引用的代码的技术。