Словарь <struct, int> неправильно сериализуется - PullRequest
3 голосов
/ 16 июня 2011

У меня есть служба WCF, и я пытаюсь отправить Dictionary<CustomStruct, int> с моего клиента на мой сервер. Моя служба WCF использует стандартную привязку BasicHttpBinding.

Когда я отправляю Словарь на сервер, ошибка не выдается. Но когда я пытаюсь зациклить свой словарь, он становится пустым.

Странная вещь в том, что Dictionary<string, string> на самом деле работает?!

Есть ли у кого-нибудь представление о том, почему мой Dictionary<CustomStruct, int> пуст после того, как он прошел через провод, и почему Dictionary<string, string> работает.

[EDIT] Вот как выглядит моя структура:

[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)
    {
        ...
    }
}

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Вот рабочий пример, который делает то, что вы хотите

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

К сожалению, из кода, который вы предоставили, я не могу понять, что не так - возможно, у вас разные пространства имен в CustomStruct на клиенте и сервисе, и поэтому сериализация работает неправильно, но без просмотра сгенерированного кода и пользовательская структура более полно я не могу сказать

1 голос
/ 16 июня 2011

Попробуйте посмотреть, поможет ли этот FAQ. Служба WCF, возвращающая массив словаря

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...