在D中识别具有指定Id的方法

时间:2012-06-26 15:46:04

标签: d

我想要在编译时识别特定模式的特定方法,并在父类中通过mixins注册指定的id。

例: 从具有预定id:5的类中获取方法'X',我想要的是,在父类的mixin中,方法X将被注册为委托,其id将由其id稍后调用。

如果我希望id为int类型并且只注册指定的方法,那么指定Id的最佳方法是什么?

我应该(如果可能的话)使用自定义注释来完成它,就像@property一样,但是带有一个参数,例如:

@autoregister(id)
void method(...)

如果可以这样做,一个示例或文档的链接将会很好,因为我没有在文档中找到它。

如果不可能,我会将函数的签名用作字符串,但我真的想用数字标识符代替可能很长的字符串。

1 个答案:

答案 0 :(得分:1)

目前无法进行自定义注释(但将来也是如此)。

但是,您可以制定自己的方法命名约定,以允许您执行与您所描述的操作类似的操作。我没有时间深入思考如何实现这一目标,但我会从一个方法开始:

public void id30_doSomething(/* params */) {
  // body
} 
alias id30_doSomething doSomething;

// finally, lets do something with all these methods
// and generate mixin...

在此之后你可以列出所有方法并查找它们的名称是否匹配id([0-9]*)_.*,如果是,那么你生成mixin以在父级中注册它们......