我有一个名为“Board”的类,它的一个属性是 ObservableCollection。当我通过 WCF(从服务器到客户端)发送 ObservableCollection 时,从我的代理端调用它,它变成了一个数组,这对我没有好处。
我可以在发送后保留 ObservableCollection,还是我必须踢 Array 直到它再次变成 ObservableCollection?
我有一个名为“Board”的类,它的一个属性是 ObservableCollection。当我通过 WCF(从服务器到客户端)发送 ObservableCollection 时,从我的代理端调用它,它变成了一个数组,这对我没有好处。
我可以在发送后保留 ObservableCollection,还是我必须踢 Array 直到它再次变成 ObservableCollection?
查看 VS 上下文菜单中的“配置服务参考”选项以供参考。您可以选择跨服务传输的集合类型。默认情况下,我认为它设置为数组,但有几个选择(我相信 list 和 observablecollection 是选项)。
编辑:我刚刚检查过,不幸的是可观察的集合不是选择之一。看来您必须从中进行选择:
默认情况下 - 不,您对此无能为力。WCF 会将您的结构序列化为可以用 XML 模式表示的东西。XML Schema 除了原始且相当简单的数据结构外,一无所知。您只能传输具体的原始数据 - 没有“魔法”行为插件。
这个问题有一个解决方案,如果你拥有电线的两端:你可以将你的服务和数据契约放入一个单独的类库程序集中,并在服务器和客户端之间共享它们。在这种情况下,你的数据契约只有一个实现——你的 ObservableCollection。
如果您在服务(实现)类和客户端之间共享该程序集(在您从 Visual Studio 中“添加服务引用”之前添加对该程序集的引用!),那么您的客户端应该选择该 ObservableCollection 并继续使用它(而不是在客户端创建与 XML 模式兼容的数组)。
谢谢两位的回答。当我继续项目时,我将查看这两种解决方案,并从尝试更改通过 wcf 服务发送的集合开始。
我会让你知道什么对我有用...