C# WCF返回空的自定义集合类型

C# WCF返回空的自定义集合类型,c#,wcf,silverlight,observablecollection,C#,Wcf,Silverlight,Observablecollection,正如您所知,observateCollection没有AddRange扩展方法。因此,我们添加了来自ObservableCollection的自定义集合: [CollectionDataContract] public class CustomObservableCollection<T> : ObservableCollection<T> { public CustomObservableCollection() : base() {

正如您所知,
observateCollection
没有
AddRange
扩展方法。因此,我们添加了来自
ObservableCollection
的自定义集合:

[CollectionDataContract]
public class CustomObservableCollection<T> : ObservableCollection<T>
{
    public CustomObservableCollection()
        : base()
    {
    }

    public CustomObservableCollection(IEnumerable<T> collection)
        : base(collection)
    {
    }

    public CustomObservableCollection(List<T> list)
        : base(list)
    {
    }

    public void AddRange(IEnumerable<T> range)
    {
        foreach (var item in range)
        {
            Items.Add(item);
        }

        this.OnPropertyChanged(new PropertyChangedEventArgs("Count"));
        this.OnPropertyChanged(new PropertyChangedEventArgs("Item[]"));
        this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
    }

    public void Reset(IEnumerable<T> range)
    {
        this.Items.Clear();

        AddRange(range);
    }
}
现在我可以看到我的服务正在将
CustomObservableCollection
返回到客户端

但问题是它返回空集合。我知道在服务返回之前,自定义收集中有数据,但我的
silverlight
客户端接收到空集。有人知道问题出在哪里吗


我们已经尝试添加一个扩展,但问题是扩展方法会为每个元素发出集合更改通知,因此我们的
silverlight
应用程序在大型集合上就要消亡了。这就是为什么我们使用
子类化
只引发一次事件。

我已经从类中删除了属性
[CollectionDataContract]
,现在一切都正常了

为什么不为基类库类型
observateCollection
添加一个
AddRange
扩展方法呢?对我来说,这似乎更容易。@Martin,当然我们已经尝试过了,但问题是它会为每个元素发出集合更改通知,因此我们的silverlight应用程序在大型集合中完全失效。这就是为什么我们使用子类只在onceOk上引发事件,现在听起来很合理。
<CollectionMappings>
  <CollectionMapping TypeName="BusinessModel.Common.CustomObservableCollection`1" Category="List" />
</CollectionMappings>