我有一个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)
{
...
}
}
答案 0 :(得分:1)
尝试查看此常见问题是否有帮助。 WCF service returning an array of dictionary<string, object>
答案 1 :(得分:1)
这是一个可以完成你想要的工作样本
http://rocksolidknowledge.blob.core.windows.net/demos/CustomStructSerialization.zip
不幸的是,从目前为止提供的代码中我可以看到什么是错的 - 猜测你的CustomStruct在客户端和服务上有不同的命名空间,因此序列化工作不正常但没有看到生成的代码和自定义结构更完全我无法分辨