词典<;struct,int>;没有正确序列化

本文关键字:序列化 int lt struct 词典 gt | 更新日期: 2023-09-27 17:59:31

我有一个WCF服务,我尝试从客户端向服务器发送Dictionary<CustomStruct, int>。我的WCF服务使用默认的BasicHttpBinding。

当我将Dictionary发送到服务器时,不会引发任何错误。但当我试图循环浏览我的字典时,它是空的。

奇怪的是Dictionary<string, string>真的有效?!

有人知道为什么我的Dictionary<CustomStruct, int>在穿过电线后是空的,以及Dictionary<string, string>为什么工作吗。

[编辑]以下是我的结构:

[DataContract]
public struct CustomStruct : IEquatable<CustomStruct>
{
    [DataMember]
    private string _prop;
    public string Prop { get { return _prop; } }
    public override int GetHashCode()
    {
        return Prop.GetHashCode();
    }
    public static bool operator ==(CustomStruct left, CustomStruct right)
    {
        ...
    }
    public static bool operator !=(CustomStruct left, CustomStruct right)
    {
        ...
    }
    public override bool Equals(object obj)
    {
        ...
    }
}

词典<;struct,int>;没有正确序列化

这里有一个工作示例,可以执行您想要的

http://rocksolidknowledge.blob.core.windows.net/demos/CustomStructSerialization.zip

不幸的是,从你迄今为止提供的代码来看,我可以;我不知道出了什么问题-猜测你在客户端和服务的CustomStruct上有不同的名称空间,因此序列化无法正常工作,但如果没有更全面地看到生成的代码和自定义结构,我无法告诉

试着看看这个常见问题解答是否有帮助。WCF服务返回字典<字符串,对象>