我有一个名为“Board”的类,其中一个属性是ObservableCollection。当我通过WCF发送ObservableCollection(从服务器到客户端)结束从我的代理调用它时,它变成了一个数组,这对我没有好处。
我可以在发送之后保留ObservableCollection,还是我必须踢数组直到它再次成为ObservableCollection?
答案 0 :(得分:2)
在VS的上下文菜单中查看“配置服务引用”选项以供参考。您可以选择通过服务传输的集合类型。默认情况下,我认为它设置为数组,但有几个选择(我相信list和observablecollection是选项)。
编辑:我刚检查过,遗憾的是,可观察的收藏不是其中一种选择。看起来你必须选择:答案 1 :(得分:2)
默认情况下 - 不,你不能做任何事情。 WCF会将您的结构序列化为可以用XML模式表示的内容。 XML Schema除了原始的和相当简单的数据结构之外什么都不知道。您只能传输具体的原始数据 - 没有“神奇的”行为插件。
问题有一个解决方案, IF 您拥有线路的两端:您可以将服务和数据合同放入单独的类库程序集中,并在服务器和客户端之间共享。在这种情况下,您只需要一次实施数据合同 - 您的ObservableCollection。
如果您在服务(实现)类和客户端之间共享该程序集(在Visual Studio中添加服务引用之前添加对该程序集的引用),那么您的客户端应该拿起ObservableCollection并继续使用它(而不是在客户端创建XML模式兼容的数组)。
答案 2 :(得分:0)
谢谢你们的回答。 当我继续项目时,我会看两个解决方案,并将尝试通过wcf服务更改Collection发送。
我会告诉你什么对我有用......