ediFabric 6.7.7 - проверка общего сообщения EDI
Я использую обновленную версию 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));
System.InvalidOperationException: тип EdiFabric.Rules.X12004010810.M_810 не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые статически не известны
Поэтому мой вопрос - можно ли как-то проверить обобщенное сообщение, без явного приведения его к определенному классу.
Здесь я получаю правильную схему через GS Header и ST01 через рефлексию.
Конечно, я могу написать свой собственный Xml Serializer и vaildate для схемы Xsd, используя XsdSchemaCollection
, но EdiMessage<S_ISA, S_GS>
содержит ValidateX12()
метод, и я хочу использовать его, если это возможно.
1 ответ
Это теперь доступно в версии 6.8.2. Вы можете назвать это так: var validation = new List(msg.Value.Validate());
Теперь он внутренне разрешает xsd и формат.