我从互联网上尝试了很多解决方案。但我无法解决这个问题。
我尝试过以下链接的解决方案:
WCF Proxy Returning Array instead of List EVEN THOUGH Collection Type == Generic.List
WCF Returning Array instead of List EVEN THOUGH Collection Type == Generic.List
Why does WCF return myObject[] instead of List<T> like I was expecting?
但我无法解决它。
我有2份相同的wcf服务源代码“WCFServiceApplication”。一个在IIS7上的LAN上托管,另一个在我的解决方案中在本地运行。
IIS7上托管的那个工作正常并返回对象列表。但是我的本地解决方案。我试图在解决方案中本地引用在我的一个名为“MyProjectLibrary.csproj”的本地项目中使用“WCFServiceApplication”函数。
但我在这里遇到了问题。它没有给我自定义类对象的通用列表。
感谢任何帮助。
由于
我正在返回以下课程列表:
[DataContract(IsReference = true)]
[KnownType(typeof(Joc))]
[KnownType(typeof(Stakeholder))]
[XmlInclude(typeof(JocStakeholder))]
public class JocStakeholder
{
[DataMember]
public long ID { get; set; }
[DataMember]
public virtual Joc joc { get; set; }
[DataMember]
public virtual Stakeholder stakeholder { get; set; }
}
Joc和利益相关者是另外两个类。实际上,这些是代码优先实体。
我的界面有这个功能:
[ServiceContract]
public interface IService
{
[OperationContract]
public IList<JocStakeholder> GetJocStakeHolders();
}
答案 0 :(得分:1)
按如下所示更改客户端的服务参考设置
右键单击服务参考并选择 配置服务参考
在数据类型属性设置下,将集合类型值从Array更改为
System.Collections.Generic.List
这会为您提供通用列表作为回复
答案 1 :(得分:0)
指定WCF客户端的列表集合类型。默认类型为Array。
您可以在添加服务引用点击Advance in Add Service Reference Dialog Box之前进行更改。在Collection Type旁边的Data Type下,选择drownlist System.Collections.Generic.List。
答案 2 :(得分:0)
我尝试了大部分在Stackoverflow.com和Internet上看到的方法。但我无法找到一个可以为我完成这项工作的人。
所以,最后,我发现了这篇文章WCF the Right Wat by Miguel Castro,我通过服务实现了与Miguel Sir正在做的相同的架构。该架构解决了这个问题。
但是一些程序员可能不同意该文章中使用的架构,因为Model Classes项目正作为DLL分发给客户端。而在WCF中,通常通过服务公开类。