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

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

奇怪的是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)
    {
        ...
    }
}

最佳答案

这是一个可以满足您需求的工作示例

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

不幸的是,从到目前为止提供的代码中,我看不到出了什么问题–猜测您在客户端和服务上的CustomStruct上具有不同的名称空间,因此序列化无法正常工作,但是没有看到生成的代码和自定义结构我更不能说

10-08 14:06