【发布时间】:2017-03-03 11:27:05
【问题描述】:
我正在使用新更新的 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 序列化器并使用 XsdSchemaCollection 对 Xsd 架构进行验证,但 EdiMessage<S_ISA, S_GS> 包含 ValidateX12() 方法,如果可能我想使用它。
【问题讨论】: