ediFabric 6.7.7 — проверка общего сообщения EDI

#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. Спасибо, я постараюсь