2013-12-10 36 views
4

我正在使用vibe.d从类生成一些REST接口。但是,vibe.d要求我提供实现此接口的接口和类。我的应用程序很小,只包含这个接口的一个实现,当我想进行一些更改时,编辑这两个地方是非常烦人的。有没有办法使用mixin或模板从D中的类生成接口?

所以问题是:是否有任何混合模板或模板可以从给定class定义中生成interface?这应该是很有可能实现的,但我无法找到任何示例。 std.typeconsWhiteHoleBlackHole来自动实现接口,但我想要与他们相反的东西。

谢谢。

回答

3

有可能编写这样的mixin,但会创建一个循环依赖性问题 - 能够生成一个接口,但不能从它继承类。一个可能的解决方法是使用新的std.typecons.wrap做3个步骤:

  • 定义实际的类
  • 生成界面从中
  • 创建映射实际一个通过std.typecons.wrap
接口的包装类

如果您熟悉D元编程技术,这种mixin的实际实现有些简单。它归结为通过类的所有方法和迭代附加裸方法声明导致串可在稍后混合克隆funcion声明可以从这个整齐助手本做在vibe.d内部:cloneFunction

精确代码对于StackOverflow答复有点太长了,但我会很乐意提供关于它的任何特定问题的详细解释。这就是说,我倾向于同意,要求接口和类都是不必要的限制,应该可以使用裸类。最终我将实现它,但它需要模块代码中的很多更改,并且与我的TODO列表中的其他一些当前问题相比,它的优先级稍低。抱歉给你带来不便。

相关问题