Проблема сериализации WCF после создания файла с помощью xsd

У нас есть довольно длинный xsd, и мы сгенерировали класс C# DTO, используя xsd.exe. Нам нужно пометить наши классы как DataContract и его членов как DataMember, поскольку мы хотим использовать DataContractSerializer, а не XML.

Мне удалось пометить классы и членов соответствующим образом, но при попытке запустить код я получаю ниже KnownType exception, я пытался добавить все KnownType во все классы, но ошибки находятся в аналогичных строках. Я не смог найти для этого никакого решения. Может ли кто-нибудь предложить, как мы используем DataContract в файле, созданном с помощью xsd.exe.

Consider using a DataContractResolver if you are using DataContractSerializer or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to the serializer.System.ServiceModel.CommunicationException:

Я устал от svcutil, и он дает мне массу ошибок, а также не генерирует ожидаемый результат, в то время как XSD делает.

Не используйте xsd.exe, используйте svcutil.exe, который предназначен для автоматического создания классов контрактов данных. См. Создать DataContract из XSD.

dbc 04.12.2018 23:36

Возможный дубликат Создать DataContract из XSD

MickyD 04.12.2018 23:39

Спасибо @MickyD .. Я тоже пробовал Svcutil, но он не сгенерировал должным образом, и поэтому мне пришлось застрять с xsd.

Punit 04.12.2018 23:42

Что ж, возможно, ваш XSD использует функции XML и XSD, не поддерживаемые сериализатором контракта данных, такие как атрибуты, коллекции без внешнего элемента-контейнера или полиморфизм через имя элемента, а не через атрибут xsi:type. Поэтому я думаю, что нам нужно увидеть минимальный воспроизводимый пример, чтобы помочь вам, в идеале пример некоторых файлов XSD, для которых svcutil.exe генерирует неправильные классы, плюс XML, который они не могут десериализовать.

dbc 04.12.2018 23:45

Сожалею, что слышал это Punit. Я согласен с dbc, что вам больше всего нужен MCVE. Есть ли шанс опубликовать какой-нибудь XSD, который вас огорчает?

MickyD 05.12.2018 02:02

@MickyD - XSD довольно большой, это MISMO 3.4, который составляет около 8 МБ, поэтому я не смогу вставить, я думаю ... Я не знал, что DataContractSerializer не поддерживает несколько атрибутов xml, что может быть причиной. .. Спасибо за эту информацию, dbc .... Похоже, единственный способ использовать XMLSerializer для продвижения вперед ....

Punit 05.12.2018 04:14

Мы сказали "минимальный". Неужто у вас нет проблем со всем XSD?

MickyD 05.12.2018 10:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
62
0

Другие вопросы по теме