2011-07-08 17 views
0

我想在我的Web服務層中聲明一個接口,然後讓調用者通過代理創建此接口類型的對象,並使用它們調用服務方法。但是,當我使用DataContract屬性修飾接口時,出現錯誤,指出此屬性只能應用於類,結構和枚舉。我不認爲該ServiceContract屬性是有意義的,因爲我試圖公開的接口僅用於數據傳輸目的。我還注意到,當界面用ServiceContract裝飾時,它並沒有顯示在創建的代理類中。 最好的做法是什麼?使界面在WCF Web服務中可見

回答

1

你不能做到這一點。 「DataContract」接口不能作爲元數據的一部分公開。同樣,即使您共享接口(在彙編中),您的客戶端也無法將其實現發送回您的服務,因爲接收方需要反序列化實例的真實類型。

+0

謝謝。這就說得通了。我需要什麼屬性來裝飾界面,以便我可以生成代理?當沒有屬性,我嘗試代理生成時,出現錯誤:無法激活服務。無法加載類型InterfaceType。 – laconicdev

+0

你想做什麼?如果您希望將接口公開爲服務(即代理生成的接口),則會使用「ServiceContract」及其使用OperationContract的方法進行標記。 –

+0

我想在我的服務層中定義一些我的服務對象將實現的接口。但是,如果我只是創建一個沒有屬性的公共接口,並且有一個標有[DataContract]的對象來實現它,當試圖瀏覽.svc文件時,我會收到「無法加載類型'InterfaceType'錯誤。 – laconicdev

0

服務合同在接口上使用,即服務的名稱。數據合約用於班級,即您發送的數據。

  • 的ServiceContract在接口
  • OperationContract的對性能

  • 數據成員類的方法
  • DataContract參見:http://msdn.microsoft.com/en-us/magazine/cc163647.aspx

  • +0

    我明白這個區別。我的問題是這樣的:我需要什麼屬性來裝飾一個接口,讓它通過代理可見? – laconicdev