Свойство в службе WCF с некоторым начальным значением для использования на стороне клиента - PullRequest
0 голосов
/ 27 октября 2009

У меня есть свойство в классе обслуживания WCF с начальным значением, как показано ниже

    private int mFieldLength_Name = 50;
    [DataMember]
    public int FieldLength_Name
    {
        get { return mFieldLength_Name; }
        private set { mFieldLength_Name = value; }
    }

Однако, когда я звоню на стороне клиента, он всегда возвращает «0», а не «50».

Как мне исправить эту проблему?

Я пытался [DataMember (EmitDefaultValue = false)] но не работает ...: (

Спасибо,

Riju * ​​1012 *

Ответы [ 2 ]

4 голосов
/ 13 декабря 2012

Я столкнулся с той же проблемой; выполнив много попыток, я обнаружил, что проблема заключается в DataType.

У меня был тип данных Int32 для каждой базы данных, а используемые свойства имели типы String, это не вызывает проблем компиляции или выполнения, так как int может быть сериализовано по умолчанию в string.

Но я каждый раз видел пустое значение, я менял свойство Type на Int32, и оно работало как шарм. Попробуйте, подтвердите ваши типы данных, так как они показывают правильные данные на компиляторе, до первого вызова службы, но как только вы перейдете службу, вы увидите пустые данные.

Так что, если я скажу решение в одной строке, если типы данных не совпадают; может возвращать пустые значения.

1 голос
/ 27 октября 2009

Используете ли вы ту же сборку DataContracts на клиенте, что и на сервере? Если вы генерируете свои собственные контракты для использования в клиенте, он не будет знать об этой инициализации, потому что такое поведение не может быть переведено по проводам.

Когда вы выбираете "неестественное" значение по умолчанию для типа (то есть 50 вместо 0 для целого числа), вы должны применить DefaultValueAttribute к элементу данных, чтобы DataContractSerializer понял, что значение является значением по умолчанию, а не испустить его.

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