我正在尝试通过具有ObservableCollection<int>
属性的WCF数据服务公开模型类。当我这样做时,WCF数据服务抛出:
服务器在处理请求时遇到错误。例外 消息是'MyProperty'类型'MyProject.MyClass'的属性' 不是有效的财产。类型为集合的属性 不支持基元或复杂类型。'
这似乎是一个相当严重的限制。
我能够通过人工引入新的实体包装来代表int
来解决这个问题:
[DataContract]
public class SelectionEntity
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int Index { get; set; }
}
并将我的属性声明更改为
public ObservableCollection<SelectionEntity> MyProperty { get; set; }
这是最佳做法吗?为了规避这种限制,引入一个新实体似乎效率很低,也很麻烦。
答案 0 :(得分:1)
这是V2版本的已知限制。我们有一个V3 CTP,允许属性是原始或复杂类型的集合。您可以在此处下载:http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/announcing-wcf-data-services-oct-2011-ctp-for-net-4-and-silverlight-4.aspx。