#c# #edi #edifabric
#c# #edi #edifabric
Вопрос:
Я использую новую обновленную ediFabric 6.7.7 и пытаюсь проверить общее сообщение, поэтому я не могу привести его к определенному классу определенной версии.
У меня проблема с сериализацией xml.
Этот код работает (он очень похож на код в модульных тестах ediFabric)
var invoice = (M_810) msg.Value;
var validation = new List<string>(invoice.ValidateX12(xsdStream));
но это приводит к возникновению исключения
var validation = new List<string>(msg.Value.ValidateX12(xsdStream));
Система.Исключение InvalidOperationException: тип
EdiFabric.Rules.X12004010810.M_810 не ожидалось. Используйте
Атрибут XmlInclude или SoapInclude для указания типов, которые не являются
известно статически
Итак, мой вопрос в том, возможно ли каким-то образом проверить общее сообщение, без явного приведения его к определенному классу.
Способ, которым я получаю правильную схему здесь, — через заголовок GS и ST01 через отражение.
Конечно, я могу написать свой собственный Xml-сериализатор и vaildate для Xsd-схемы, используя XsdSchemaCollection
, но EdiMessage<S_ISA, S_GS>
содержит ValidateX12()
метод, и я хочу использовать его, если это возможно.
Ответ №1:
Теперь это доступно в версии 6.8.2. Вы можете назвать это следующим образом: var validation = новый список (msg.Value.Проверка());
Теперь он внутренне разрешает xsd и формат.
Комментарии:
1. Спасибо, я постараюсь