C# IEnumerable<;T>;作为WCF方法的返回类型

C# IEnumerable<;T>;作为WCF方法的返回类型,c#,.net,wcf,interface,C#,.net,Wcf,Interface,如果我用字符串和日期时间属性定义一个测试对象,并使用它在WCF中返回IEnumerable(T)集合 [OperationContract] IEnumerable<Test> GetTestNotes(); 我能得到数据 问题是:使用IEnumerable(T)接口而不是具体的列表(T)有多可靠 使用这些WCF服务的我的客户端不仅在.NET中,而且在JAVA中。如果您使用的是Visual Studio生成的服务引用,您可以选择用于集合的类型。右键单击服务引用下的服务,然后选择配置

如果我用字符串和日期时间属性定义一个测试对象,并使用它在WCF中返回IEnumerable(T)集合

[OperationContract]
IEnumerable<Test> GetTestNotes();
我能得到数据

问题是:使用IEnumerable(T)接口而不是具体的列表(T)有多可靠


使用这些WCF服务的我的客户端不仅在.NET中,而且在JAVA中。

如果您使用的是Visual Studio生成的服务引用,您可以选择用于集合的类型。右键单击服务引用下的服务,然后选择配置服务引用…。您应该看到以下选项:


但是,这仍然不允许您选择
IEnumerable
。如果您想更严格地控制客户端界面的外观,最好是在单独的程序集中定义约定,然后在客户端和服务器上引用这些程序集。

了解配置服务引用选项很好。实际上,我想知道使用IEnumerable(T)以后是否会给我带来任何序列化问题。在我简单的概念证明中,它在im使用.Net客户端(控制台应用程序)时运行良好。但是想知道IEnumerable(T)是否适用于Java客户端?@sunny24365在内部,该服务使用SOAP(XML)序列化。您在接口上声明的类型纯粹是为了客户机的利益。WCF足够聪明,可以按照服务期望的方式序列化
IEnumerable
public Test[] GetTestNotes() {
    return base.Channel.GetTestNotes();
}