在WCF中,爲什麼我們不能使用抽象類而不是接口作爲服務契約,爲什麼我們應該在配置WCF服務時在端點元素中指定契約中的所有服務契約(接口)?請幫忙。爲什麼我們不能在WCF中使用抽象類而不是接口?
回答
ServiceContract和OperationContract可以在抽象類上使用,並且代碼將成功編譯,因爲根據C#編譯器,沒有什麼不對。 但是在託管服務時,ServiceHost 將拋出異常,因爲根據WCF規則 - 如果某個類已標記了ServiceContract屬性,則另一個類不能繼承它。
底線 - 不支持。你需要使用接口。
這轉到了OOP的基礎。如果您使用抽象類,將編譯但在運行時會拋出一個異常,說
繼承只能在界面中使用types.If一類標有ServiceContractAttribute的,那麼另一個服務類不能從它派生
這隻有在接口的情況下才有可能。
你能告訴我你爲什麼投下我的答案嗎?我是否應該刪除它,如果它對您沒有足夠的描述性? –
不確定是誰投了棄權票,但這可能與您聲稱這是OOP的核心有關,但不會詳細說明這意味着什麼。如果你刪除了特定的評論,那麼你的回答更重要。 –
謝謝湯姆:) –
- 1. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 2. 爲什麼在接口爲什麼不能在抽象類
- 3. 爲什麼我們需要抽象類而不是虛擬類?
- 4. 爲什麼HttpContext是一個抽象類而不是接口?
- 5. 爲什麼IDisposable是一個接口,而不是抽象類?
- 6. 爲什麼java.sql.Statement是一個接口而不是抽象類?
- 7. 爲什麼我們在抽象類存在時需要接口?
- 8. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 9. 爲什麼我們使用接口而不是協議?
- 10. 的Grails - 接口而不是抽象類
- 11. 爲什麼WCF服務使用接口作爲服務契約而不是抽象類?
- 12. 爲什麼我們不能在接口/抽象類中使用Shared(靜態)函數/方法?
- 13. 爲什麼我們不能在C++中爲抽象類創建對象?
- 14. 爲什麼使用抽象如果我們有接口
- 15. 爲什麼我們實現接口抽象類
- 16. 爲什麼我們有抽象類時需要接口?
- 17. 爲什麼抽象類和接口不能被實例化?
- 18. 我們什麼時候去Java中的接口或抽象類?
- 19. 不使用抽象類而不使用接口的原因?
- 20. 對象作爲參數,爲什麼不能我們聲明的類,而不是
- 21. 爲什麼要使用抽象接口?
- 22. 爲什麼我們在java中使用抽象類和抽象方法
- 23. 使用分部類而不是抽象類有什麼好處?
- 24. 爲什麼在我們的項目中需要接口層/抽象類?
- 25. 爲什麼要在Java中接口,如果我們有抽象類?
- 26. 爲什麼HttpServletRequestWrapper類不是抽象的
- 27. 爲什麼我們不能創建Collections類的實例(不是Collection接口)?
- 28. 爲什麼接口或抽象類有用? (或爲什麼?)
- 29. 爲什麼我們不能用192.168.1子網掩碼,而不是
- 30. C#中的抽象類和接口類有什麼不同?
嗯,我認爲這個沒有說明的事實是你不能支持你的服務合同中的狀態,這是抽象類允許的。 – ChaosPandion