2013-09-26 139 views
4

我試圖在開發WCF服務的應用程序中堅持DRY原則,但我似乎要走很多兔子洞。我最初的想法是擁有一個抽象基類來保存所有服務通用的代碼,併爲每個具體服務派生類,但似乎無法讓VS2012發揮出色。帶WCF的多態服務

無論何時你創建一個服務類,它都會將合約(接口)和實現類放在同一個項目中,並試圖將這些分離開來,似乎可以使VS在引擎蓋下完成的接線事情破裂。我想我所有的「經典」面向對象設計的年代都在困擾着我,我想要從接口類和抽象基類派生出具體的服務,但我沒有很多運氣。我發現有服務使用多態DATA類型的問題/博客,但沒有找到多態SERVICE類型的例子。任何人都可以指點我?

謝謝, 彼得

更新:也許我過想整個事情,我其實並不想有運營繼承自一個複合的做法會更有意義,我只是想保持通用代碼在一個地方(顯然是......),整個「靜態助手類」方法對我來說總是覺得「髒」,有點擊敗了整個面向對象的方法......我希望我可以簡單地讓contrete服務類繼承一個抽象的基類,不一定是任何特定的服務合同的實現,但只是一種方法來保持代碼DRY ...

另外:我正在嘗試使用Templ因爲服務的總體結構非常相似(魔鬼總是在細節中......)

+0

是的,如果你不遵循模板,它將無法正常工作,但這並不意味着你必須遵循該模板。只需在創建新項目後修復環境,或者如果您經常製作項目[製作自己的模板項目](http://msdn.microsoft.com/en-us/library/vstudio/s365byhx.aspx)並且具有可視化工作室使用它。你有一種[XY問題](http://meta.stackexchange.com/questions/66377),你應該[編輯問題](http://stackoverflow.com/posts/19035608/edit )或者詢問一個新的關於你正在做WCF和基類的困難。 –

+0

如果繼承不能爲你工作,你可以嘗試委派,這是幾行代碼,但可能不那麼頭疼。 – PatFromCanada

+0

您希望從抽象基礎繼承哪些常用功能? –

回答

4

您可以將接口類和實現類分離到不同的項目中。一種簡單的方法就是手動創建項目,並像對任何.NET OO解決方案一樣編寫/複製代碼。

下面是一組由微軟提供的樣本進行...

http://www.microsoft.com/en-us/download/details.aspx?id=21459

你應該能夠挖掘到的樣品,找到一個符合您的要求。