2014-02-25 55 views
2

如果我定義了一個測試對象,用繩子和日期時間屬性,並使用它在WCF的IEnumerable <T>作爲返回類型WCF方法

[OperationContract] 
IEnumerable<Test> GetTestNotes(); 

返回的IEnumerable(T)採集和調用來自客戶端的服務時,我看到它正在將IEnumerable轉換爲Test []:

public Test[] GetTestNotes() { 
    return base.Channel.GetTestNotes(); 
} 

而且我能夠獲取數據。

問題是:使用IEnumerable(T)接口而不是具體的List(T)有多可靠?

我的客戶端使用這些WCF服務不僅在.NET中,而且在JAVA中。

回答

1

如果您使用的是Visual Studio生成的服務引用,那麼您可以選擇集合使用的類型。右鍵單擊服務參考下的服務,然後選擇配置服務參考&hellip;。你應該看到這些選項:

Configure Service Reference

然而,這仍然不會讓您選擇IEnumerable<T>。如果您想要更嚴格地控​​制客戶端界面的外觀,最好的辦法是在單獨的程序集中定義合同,然後在客戶端和服務器上引用這些程序集。

+0

有關配置服務參考選項的相關信息。我實際上想知道如果使用IEnumerable(T)會在以後給我任何序列化問題。在我簡單的概念驗證中,它使用.Net客戶端(控制檯應用程序)即時運行正常。但想知道IEnumerable(T)是否適用於Java Client? – sunny24365

+0

@ sunny24365在內部,該服務使用SOAP(XML)序列化。您在界面上聲明的類型純粹是爲了客戶的利益。 WCF足夠聰明,可以按照服務期望的方式序列化一個「IEnumerable 」。 –