Создавать классы, помеченные атрибутом `Serializable`, при добавлении / обновлении справочника веб-служб Microsoft WCF - PullRequest
0 голосов
/ 28 октября 2019

Мне нужно использовать определенную веб-службу SOAP в моем приложении C #.

Но я использую новую структуру проекта (<Project Sdk="Microsoft.NET.Sdk">...</Project>) в Visual Studio 2019 (версия 16.3.6). Таким образом, вместо добавления «Справочника услуг», теперь я могу добавить «Подключенную службу» и выбрать «Поставщик ссылок на веб-службы Microsoft WCF». (Это прекрасно работает, когда я ввожу URI для ресурса WSDL в текстовое поле URI и нажимаю кнопку «Перейти».)

Однако после создания леса сгенерированный код имел два заметных различия по сравнению с той же службойссылка в более старом проекте C #:

  • сгенерированные классы не реализовали интерфейс INotifyPropertyChanged, а
  • сгенерированные классы не были помечены атрибутом Serializable.

Мне удалось позволить инструментам скаффолдинга реализовать интерфейс INotifyPropertyChanged в сгенерированных классах, добавив свойство "enableDataBinding": true в раздел ExtendedData в ConnectedService.json и обновив службу. Я попытался сделать то же самое для атрибута Serializable (добавив свойство "serializable": true в соответствии с параметрами командной строки SvcUtil.exe), но безуспешно. Похоже, это не оказало никакого влияния.

Есть ли какой-то способ, позволяющий функциональности скаффолдинга Visual Studio также отмечать сгенерированные классы как Serializable при добавлении / обновлении ссылки на службу WCF в моем приложении .NET?

1 Ответ

0 голосов
/ 04 ноября 2019

Ах. Похоже, что новая реализация «Поставщика ссылок на веб-службы Microsoft WCF» для подключенных служб не требует сериализуемых классов.

На прошлой неделе я протестировал новую ссылку на службу и она прекрасно работает без атрибута [Serializable].

...