2009-07-24 84 views
0

我有一個單獨的組件(通過WebService的參考),其中我創建了一個類(假設ABC)和類的集合(ABCCollection:IList的其中T:ABC)。現在,當我建立的代理文件(output.config和Service1.cs),那麼這兩個類的defienation不被暴露。相反,ABCCollection暴露在Servic1.cs就像ABCCollection4IP3。揭露結構 - WCF Web服務

請讓我知道這個問題的可能原因..

+0

什麼是4IP3?這添加到集合的臨界點?我從來沒有這樣做過。 – 2009-07-24 12:08:23

回答

0

它們並不意味着是同一類型。這是設計。考慮一下,如果你的服務在.NET中,而你的客戶端在Java中,它將如何工作。他們顯然是兩種不同的類型。

0

設計WCF服務時,最好的做法是分裂你的項目到獨立的組件:

大會SomeProject.ServiceContract

該組件包含您的服務合同(只是接口)。

例子:

[ServiceContract (...)] 
public interface ICan { 

    [ServiceOperation (...)] 
    void EatCandies (MyListOfCandies candies); 

} 

大會SomeProject.DataObjects

該組件包含一個用於由您的服務合同的所有數據對象。

例子:

[DataObject] 
public class MyListOfCandies : List<Candy> { 
    ... 
} 

在你的項目,該項目佔用您的Web服務引用的程序集「SomeProject.DataObjects」,然後添加您的Web服務。您會看到Visual Studio將不再生成任何存根對象,但會使用您的實現。

你可以做同樣的標記了ServiceContract組裝。這樣,您仍然可以使用Web服務,但是當你改變你的界面,你會得到編譯錯誤。