0

我有一个 WCF 方法:

public IQueryable<AmenitySummary> GetAmenities(string searchTerm)

现在,AmenitySummary这样定义

[DataContract]
public class AmenitySummary
{
    [DataMember]
    public int AmenityId { get; set; }
    [DataMember]
    public string Amenity { get; set; }
    [DataMember]
    public string LowerCaseAmenity { get; set; }
}

在我的客户端解决方案中,我有一个项目,我在其中调用此方法。问题是 Reference.cs 文件中的签名是这样的

public object GetAmenities(string searchTerm) {
   return base.Channel.GetAmenities(searchTerm);
}

怎么会?为什么不是返回类型IQueryable<AmenitySummary>?我错过了什么?

不仅如此,当我尝试AmenitySummary在客户端使用时,由于无法识别,我无法做到这一点。我认为这是有联系的。

谢谢,

小号

4

2 回答 2

1

我想是因为IQueryable。你可能也需要暴露它。

请参阅这篇文章: 通过 WCF 服务公开 IQueryable

于 2012-08-31T13:53:56.580 回答
1

如果没有特定的引用,IQueryable 是不可序列化的(请参阅 svcutil.exe /references)。

否则,使用 WCF DataService (OData) 或从服务返回 AmenitySummary 数组。在后一种情况下,您可以将数组转换为 IQuaryable 实例。

于 2012-08-31T13:56:21.147 回答