Я использую новый обновленный 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 и ST01 через отражение.
Конечно, я могу написать свой собственный Xml-сериализатор и проверить соответствие схемы Xsd, используя XsdSchemaCollection
, но EdiMessage<S_ISA, S_GS>
содержит метод ValidateX12()
, и я хочу использовать его, если это возможно.