首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能通过一本条目字典,连接项目字典?

我怎样才能通过一本条目字典,连接项目字典?
EN

Stack Overflow用户
提问于 2011-05-10 22:26:18
回答 1查看 666关注 0票数 0

我有一个服务,我试图传递一个对象字典通过。一切都很好,直到我向另一个对象添加了一个包含字典的对象字典。在下面的例子中,导致问题的字典将是A类。

代码语言:javascript
复制
    //example

    public class A
    {
     public Dictionary<string,B> BValues { get; set; }
    }

    public class B
    {
     public Dictionary<string, C> CValues { get; set; }
    }

    public class C
    {
     int x;
     int y;
    }

我已经尝试让字典知道我的服务中的类型,并确保其他类被标记为数据契约,它们的属性被标记为DataMember属性。我不知道我还需要做些什么,甚至可以做些什么来完成这个任务。

编辑

例外情况:

'schemas.microsoft.com/2003/10/Serialization/Arrays:Value';元素包含'schemas.microsoft.com/2003/10/Serialization/…;数据契约的数据。反序列化器不知道映射到该契约的任何类型。将与“ArrayOfKeyValueOfstringClassValuesNSpYOWsW”对应的类型添加到已知类型的列表中--例如,使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-12 00:53:28

为了找出失败的地方,我设置了一个简单的WCF服务,它返回一个非常基本的嵌套Dictionary,它可以很好地工作,添加了许多项。

代码语言:javascript
复制
    [OperationContract]
    Dictionary<int, Dictionary<int, int>> GetDictionary();

基于此,我假设您的对象(可能是Dictionary集合中的对象)存在问题。我建议你做些测试来缩小你的问题。

您的类可序列化吗?您可以反序列化类型的单个实例吗?(例如编写一个操作来返回像MyClass GetOneInstance();这样的对象)。您能够返回类的简单Dictionary吗?

WCF可能会向您抛出一些命名冲突--如果您的类具有与您的服务或操作相同的名称,例如,一个操作GetSomething和一个名为GetSomethingRequestGetSomethingResponse的对象将不能很好地协同工作--这主要是因为将请求和响应自动放入--命名为SOAP信封。如果您的类使用某些保留字命名,则可以尝试重命名它们。

异常表明您添加了KnownType属性。这通常适用于当您返回一个基类型时,它可能是继承类型的实例--是这样吗?对象是否涉及继承,并且是否返回基类型,这些类型可能是继承类型的实例?(例如,A:B和您的操作返回一个B,但可能是一个A)

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

https://stackoverflow.com/questions/5957232

复制
相关文章

相似问题

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