1

我有一个名为“Board”的类,它的一个属性是 ObservableCollection。当我通过 WCF(从服务器到客户端)发送 ObservableCollection 时,从我的代理端调用它,它变成了一个数组,这对我没有好处。

我可以在发送后保留 ObservableCollection,还是我必须踢 Array 直到它再次变成 ObservableCollection?

4

3 回答 3

2

查看 VS 上下文菜单中的“配置服务参考”选项以供参考。您可以选择跨服务传输的集合类型。默认情况下,我认为它设置为数组,但有几个选择(我相信 list 和 observablecollection 是选项)。

编辑:我刚刚检查过,不幸的是可观察的集合不是选择之一。看来您必须从中进行选择:

  • 大批
  • 数组列表
  • 链表
  • 列表
  • 收藏
  • 绑定列表
于 2009-11-20T20:57:12.663 回答
2

默认情况下 - 不,您对此无能为力。WCF 会将您的结构序列化为可以用 XML 模式表示的东西。XML Schema 除了原始且相当简单的数据结构外,一无所知。您只能传输具体的原始数据 - 没有“魔法”行为插件。

这个问题有一个解决方案,如果你拥有电线的两端:你可以将你的服务和数据契约放入一个单独的类库程序集中,并在服务器和客户端之间共享它们。在这种情况下,你的数据契约只有一个实现——你的 ObservableCollection。

如果您在服务(实现)类和客户端之间共享该程序集(在您从 Visual Studio 中“添加服务引用”之前添加对该程序集的引用!),那么您的客户端应该选择该 ObservableCollection 并继续使用它(而不是在客户端创建与 XML 模式兼容的数组)。

于 2009-11-20T21:41:38.607 回答
0

谢谢两位的回答。当我继续项目时,我将查看这两种解决方案,并从尝试更改通过 wcf 服务发送的集合开始。

我会让你知道什么对我有用...

于 2009-11-25T11:12:31.507 回答