Проблема с сериализацией nullable type свойств

204
19 декабря 2017, 15:22

К проекту подключен внешний Service Reference. Сгенерированный код в Reference.cs содержит свойства int и DateTime, помеченные как Nullable. Например:

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
    public System.Nullable<int> idType {
        get {
            return this.idTypeField;
        }
        set {
            this.idTypeField = value;
            this.RaisePropertyChanged("idType");
        }
    }

Проблема в том, что после сериализации эти свойства отсутствуют в теле XML-запроса. Пример кода с отправкой запроса:

        using (SingleFormatServiceClient c = new SingleFormatServiceClient())
        {
            AuthData auth = new AuthData()
            {
                login = "login",
                password = "pass"
            };
            GroupRequestData requestData = new GroupRequestData();
            ConnectorCode connectorCode = new ConnectorCode()
            {
                connectorCode = "0",
                subRequestCode = new[] { "1" }
            };
            PersonRequestData personRequestData = new PersonRequestData();
            personRequestData.idNum = "757496";
            personRequestData.idSeries = "9823";
            personRequestData.idType = 21;
            personRequestData.consentEndDate = DateTime.ParseExact("05.08.2020", "dd.MM.yyyy", CultureInfo.CurrentCulture);
            personRequestData.issueLocation = "МОСКВА";
            requestData.personParam = new[] { personRequestData };
            requestData.connectorCodes = new[] { connectorCode };
            ProcessRequestOut resp = c.groupRequest(auth, requestData);
        }

Запрос успешно отправляется. Все стринговые свойства (idNum, idSeries, issueLocation) в запросе присутствуют. idType и consentEndDate нет (вообще их нет в структуре xml). Пытаясь разобраться, в отладчике увидел, что эти свойства возвращаются не как свойства, а как поля с ограниченным доступом (?):

Судя по всему, в этом и проблема. Если в сгенерированном классе сервис-референса убрать Nullable тип, то свойство возвращается в своём нормальном виде, но возникают другие проблемы при вызове сервиса. Возможно ли как-то обойти проблему, желательно без внесения изменений в сгенерированный код? Доступа к исходному коду сервиса нет. Благодарю за любую помощь и идеи.

READ ALSO
Максимальный размер Slider Unity

Максимальный размер Slider Unity

Имеется Slider ,в инспекторе maxValue = 50 , программно задаю maxValue = 100 при запуске как было 50 так и остается, почему? Пробовал из в Awake и Start, тот де результат...

211
Не срабатывает событие keydown

Не срабатывает событие keydown

Событие нажатия клавиши альт срабатывает только один раз, но при клике правой кнопкой мыши в рабочей области снова срабатывает один раз

199
Безопасно расширить плагин jquery

Безопасно расширить плагин jquery

Работаю с плагином dateRangePickerФункциональности не хватает

252
Вывод комментариев (ajax) bootsrap

Вывод комментариев (ajax) bootsrap

Привет! Только начал изучать jsВсю голову сломал

229