首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BindingList<T> as DataMember

BindingList<T> as DataMember
EN

Stack Overflow用户
提问于 2012-10-17 23:43:45
回答 1查看 612关注 0票数 1

我有一个CLR类,我想通过WCF服务(Net绑定)发送它.客户端和服务器都使用相同的数据类和服务接口。没有生成存根。以下是两个类的基本部分:

代码语言:javascript
复制
[DataContract]
public class ContainerClass
{
    //some primitive data with [DataMember] ...

    [DataMember] /**/
    public virtual BindingList<ItemClass> Items{ get; private set; }
}

[DataContract]
public class ItemClass
{
    //some primitive data with [DataMember] ...

    public ContainerClass Parent { get; set; } // (no [DataMember])
}

如果省略了BindingListBindingList属性(标记为/**/),则数据将正确传输。当然,在没有物品的时候。

一旦我添加了[DataMember],对服务方法的调用(该方法返回一个类型为ContainerClass的对象)就会失败,并出现以下错误消息:

服务器没有提供有意义的答复;这可能是由于契约不匹配、过早的会话关闭或内部服务器错误造成的。

合同不匹配是不可能的。可能有一个内部服务器错误,但没有通知我。

如何解决这个问题并让服务器将项目发送到客户端?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 23:55:16

很可能BindingList<>无法序列化。要获得更详细的错误,需要启用跟踪。关于如何做到这一点,请参见this post

在DTO中使用复杂的集合类通常不是一个好主意。考虑数组/列表,您可以始终在客户端重构BindingList<>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12945108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档