我正在开发一个脚本#import库,我遇到了以下问题。
这是我想要的javascript输出,
o.addListener('resize', resizeHandler);
在导入库中,此方法类似于
[ScriptName("addListener")]
public void AddListenerResize(string eventname, ResizeEventHandler callback)
{
...
}
我希望我能用这样的属性来实现这个目标,
[ScriptNameTemplate("addListener('resize',{0})")]
public void AddListenerResize(ResizeEventHandler callback)
{
...
}
因为第一个参数是常量且冗余,我不希望暴露给输入错误。
具体问题是如何使用可用的工具实现这一目标。
任何建议将不胜感激
答案 0 :(得分:2)
另一个建议是创建一个表示事件名称的有效字符串值的命名值枚举。
示例:
[Imported]
[NamedValues]
public enum Events {
Resize = 0
}
然后让您的API接受Events参数,而不是字符串eventName参数。
答案 1 :(得分:0)
我不确定Script#是否支持这样的功能。
为什么不将原始导入的API包装成更方便的API:
public class RawAPI
{
[ScriptName("addListener")]
public void AddListener(string eventname, ResizeEventHandler callback)
{
...
}
}
public class GoodAPI
{
readonly RawAPI _RawAPI;
public void AddListenerResize(ResizeEventHandler callback)
{
_RawAPI.AddListener("resize", callback);
}
}
然后,仅使用GoodAPI
并忘记错别字。我甚至尝试使用RawAPI
内部,但从技术上讲,导入库方法可能是不可能的。