2016-10-21 6 views
0

새로운 ediFabric 6.7.7을 사용하고 있으며 일반 메시지의 유효성을 검사하려고합니다. 특정 버전의 특정 클래스로 전송할 수 없습니다.ediFabric 6.7.7 - 일반 EDI 메시지 유효성 검사

xml serialization에 문제가 있습니다. 이 코드는 작동

var invoice = (M_810) msg.Value; 
var validation = new List<string>(invoice.ValidateX12(xsdStream)); 

(그것은 ediFabric 단위 테스트 코드와 매우 유사하다)하지만,이 예외를

var validation = new List<string>(msg.Value.ValidateX12(xsdStream)); 

System.InvalidOperationException 오류 : 유형을 EdiFabric.Rules .X12004010810.M_810이 (가) 예상되지 않았습니다. 정적으로 알 수없는 유형을 지정합니다 XmlInclude 또는 SoapInclude 속성을 사용

그래서 제 질문은 - 명시 적으로 특정 클래스로 캐스팅 O를 \ 승, 일반적인 메시지를 검증하기 위해 어떻게 든 가능하다.

올바른 스키마를 얻는 방법은 리플렉션을 통해 GS 헤더와 ST01을 사용하는 것입니다.

물론 내가 직접을 사용하여 XSD 스키마에 대해 내 자신의 Xml serializer 및 vaildate를 작성할 수 있지만 EdiMessage<S_ISA, S_GS>에는 ValidateX12() 메서드가 포함되어 있으므로 가능한 경우 사용하고 싶습니다.

답변

1

이제 버전 6.8.2에서 사용할 수 있습니다. 다음과 같이 호출 할 수 있습니다. var validation = new List (msg.Value.Validate());

이제는 xsd와 형식을 내부적으로 결정합니다.

+0

감사합니다. –