0

我正在使用新更新的 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 序列化程序并针对 Xsd 架构进行验证XsdSchemaCollection,但EdiMessage<S_ISA, S_GS>包含ValidateX12()方法,如果可能的话我想使用它。

4

1 回答 1

1

现在在 6.8.2 版本中可用。你可以这样称呼它: var validation = new List(msg.Value.Validate());

它现在在内部解析 xsd 和格式。

于 2016-10-21T22:05:04.880 回答