导入库中的方法签名模板

时间:2011-11-28 12:23:44

标签: script#

我正在开发一个脚本#import库,我遇到了以下问题。

这是我想要的javascript输出,

o.addListener('resize', resizeHandler);

在导入库中,此方法类似于

[ScriptName("addListener")]
public void AddListenerResize(string eventname, ResizeEventHandler callback)
{
...
}

我希望我能用这样的属性来实现这个目标,

[ScriptNameTemplate("addListener('resize',{0})")]
public void AddListenerResize(ResizeEventHandler callback)
{
...
}

因为第一个参数是常量且冗余,我不希望暴露给输入错误。

具体问题是如何使用可用的工具实现这一目标。

任何建议将不胜感激

2 个答案:

答案 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内部,但从技术上讲,导入库方法可能是不可能的。