【发布时间】:2011-05-10 22:26:18
【问题描述】:
我有一个服务,我试图通过它传递一个对象字典。一切都很好,直到我添加一个对象字典,然后将字典包含到另一个对象。在下面的示例中,导致问题的字典是 A 类。
//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;
}
我已经尝试在我的服务中制作字典 knowntypes,并确保其他类被标记为数据协定,它们的属性用 DataMember 属性标记。我不知道我还需要做什么,甚至可以做什么才能完成这项工作。
编辑
例外:
元素 'schemas.microsoft.com/2003/10/Serialization/Arrays:Value'; 包含的数据 'schemas.microsoft.com/2003/10/Serialization/…; 数据合同。解串器没有 映射到的任何类型的知识 这份合同。添加类型 对应于 'ArrayOfKeyValueOfstringClassValuesNSpYOWsW' 到已知类型的列表 - 对于 例如,通过使用 KnownTypeAttribute 属性或由 将其添加到已知类型列表中 传递给 DataContractSerializer。'
【问题讨论】:
-
有什么问题?你得到一个序列化异常,还是只是空属性?需要更多信息。
-
一切构建和更新都很好。当我正在运行并且它实际上尝试序列化要发送到客户端的对象时,它得到了一个序列化异常。
-
例外情况是:元素“schemas.microsoft.com/2003/10/Serialization/Arrays:Value”包含“schemas.microsoft.com/2003/10/Serialization/…”数据合约的数据。反序列化器不知道映射到该合约的任何类型。将与“ArrayOfKeyValueOfstringClassValuesNSpYOWsW”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
-
我不确定的一件事,它以这种方式在 xsd 中创建信息,名称的末尾有乱码,不确定是否有问题,但也许这就是来源我的挫败感?
标签: wcf silverlight-4.0 datacontractserializer