2013-12-10 68 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列表中的其他一些當前問題相比,它的優先級稍低。抱歉給你帶來不便。

相關問題