我正在使用新更新的 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()
方法,如果可能的话我想使用它。