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

在D中标识具有指定Id的方法,d,D,我想让特定的方法具有在编译时识别的特定模式,并通过父类中的mixin与指定的id一起注册 例: 从一个具有预定id的类中取一个方法“X”:5,我想要的是,在父类的mixin中,方法X将注册为一个委托,其id将在稍后由其id调用 考虑到我希望Id的类型为int并且只注册指定的方法,指定Id的最佳方法是什么 我是否应该(如果可能的话)使用一个与@property非常相似的自定义注释,但使用一个参数,比如: @autoregister(id) void method(...) 如果有可能这样做,一个

我想让特定的方法具有在编译时识别的特定模式,并通过父类中的mixin与指定的id一起注册

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

考虑到我希望Id的类型为int并且只注册指定的方法,指定Id的最佳方法是什么

我是否应该(如果可能的话)使用一个与@property非常相似的自定义注释,但使用一个参数,比如:

@autoregister(id)
void method(...)
如果有可能这样做,一个例子或一个如何做的文档链接会很好,因为我没有在文档中找到它


如果不可能,我将使用函数的签名作为字符串,但我确实希望使用数字标识符,而不是尽可能长的字符串。

目前不可能进行自定义注释(但将来会这样)

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

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以在父级中注册它们…

到目前为止,这几乎是我正在使用的解决方案,并且在仔细考虑之后,我觉得注释对D语言的危害比添加到它的危害更大,但这是另一个讨论的重点。感谢您的贡献,但我仍然希望找到一个不同的解决方案或如何改进这一点的意见。我主要使用它在C#和D应用程序之间通过网络引用方法。