有没有一种方法可以使用mixin或template从D中的类生成接口



我正在使用vibe.d从类中生成一些REST接口。然而,vibe.d要求我同时提供接口和实现该接口的类。我的应用程序很小,只包含这个接口的一个实现,当我想做一些更改时,编辑这两个地方是非常烦人的。

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

谢谢。

可以编写这样的mixin,但这将产生一个循环依赖性问题-能够生成接口,但不能从中继承类。一个可能的解决方法是使用新的std.typecons.wrap分三步完成:

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

如果您熟悉D元编程技术,那么这种mixin的实际实现就有些简单了。它可以归结为迭代类的所有方法,并将裸方法声明附加到结果字符串中,这些字符串稍后可以混合使用。克隆函数声明可以通过vibe.d内部的这个整洁的助手来完成:cloneFunction

确切的代码对于StackOverflow的回复来说有点太长了,但我很乐意为任何具体的问题提供详细的解释

也就是说,我倾向于同意同时需要接口和类是不必要的限制,应该可以使用裸类。最终,我将实现它,但它需要对模块代码进行大量更改,与我的TODO列表中的其他问题相比,它的优先级有些低。很抱歉给您带来不便。

相关内容

  • 没有找到相关文章

最新更新