我有一個單獨的組件(通過WebService的參考),其中我創建了一個類(假設ABC)和類的集合(ABCCollection:IList的其中T:ABC)。現在,當我建立的代理文件(output.config和Service1.cs),那麼這兩個類的defienation不被暴露。相反,ABCCollection暴露在Servic1.cs就像ABCCollection4IP3。揭露結構 - WCF Web服務
請讓我知道這個問題的可能原因..
我有一個單獨的組件(通過WebService的參考),其中我創建了一個類(假設ABC)和類的集合(ABCCollection:IList的其中T:ABC)。現在,當我建立的代理文件(output.config和Service1.cs),那麼這兩個類的defienation不被暴露。相反,ABCCollection暴露在Servic1.cs就像ABCCollection4IP3。揭露結構 - WCF Web服務
請讓我知道這個問題的可能原因..
它們並不意味着是同一類型。這是設計。考慮一下,如果你的服務在.NET中,而你的客戶端在Java中,它將如何工作。他們顯然是兩種不同的類型。
設計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服務,但是當你改變你的界面,你會得到編譯錯誤。
什麼是4IP3?這添加到集合的臨界點?我從來沒有這樣做過。 – 2009-07-24 12:08:23