我正在使用新更新的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通过反射。
当然,我可以使用XsdSchemaCollection
编写自己的Xml Serializer并对Xsd架构进行vaildate,但EdiMessage<S_ISA, S_GS>
包含ValidateX12()
方法,如果可能,我想使用它。
答案 0 :(得分:1)
现在可以在6.8.2版中使用。你可以这样称呼它: var validation = new List(msg.Value.Validate());
它现在在内部解析xsd和格式。