У нас есть довольно длинный 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 делает.
Возможный дубликат Создать DataContract из XSD
Спасибо @MickyD .. Я тоже пробовал Svcutil, но он не сгенерировал должным образом, и поэтому мне пришлось застрять с xsd.
Что ж, возможно, ваш XSD использует функции XML и XSD, не поддерживаемые сериализатором контракта данных, такие как атрибуты, коллекции без внешнего элемента-контейнера или полиморфизм через имя элемента, а не через атрибут xsi:type. Поэтому я думаю, что нам нужно увидеть минимальный воспроизводимый пример, чтобы помочь вам, в идеале пример некоторых файлов XSD, для которых svcutil.exe генерирует неправильные классы, плюс XML, который они не могут десериализовать.
Сожалею, что слышал это Punit. Я согласен с dbc, что вам больше всего нужен MCVE. Есть ли шанс опубликовать какой-нибудь XSD, который вас огорчает?
@MickyD - XSD довольно большой, это MISMO 3.4, который составляет около 8 МБ, поэтому я не смогу вставить, я думаю ... Я не знал, что DataContractSerializer не поддерживает несколько атрибутов xml, что может быть причиной. .. Спасибо за эту информацию, dbc .... Похоже, единственный способ использовать XMLSerializer для продвижения вперед ....
Мы сказали "минимальный". Неужто у вас нет проблем со всем XSD?





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