2011-07-01 12 views
3

일부 복잡한 형식 매개 변수를 받고 반환하는 WCF 서비스를 사용하는 클라이언트 응용 프로그램이 있습니다. 이러한 복잡한 형식은 클라이언트 응용 프로그램과 WCF 서비스가 모두 참조하는 별도의 어셈블리에 보관됩니다 .. 클라이언트 응용 프로그램에서 서비스 참조를 추가하면 생성 된 참조 클래스가 해당 매개 변수의 자체 버전을 작성합니다. 따라서 원래 형식이 정의 된 어셈블리 형식을 전달할 수 없습니다. 그것이 이해할 수 있는지 확실하지 않습니다 ..서비스 참조 복합 유형

질문입니다 .. 효과적으로 원본 참조에서 클래스를 생성하는 서비스 참조를 구축하기 위해 반사 형 전체 복사본 루틴을 작성해야합니까? 또는 더 나은 옵션

NAT

+0

데이터 계약을 전달하는 복잡한 유형입니까? 저는 WCF가 공유 어셈블리에서 재사용 할 수있는 타입을 처리 할 수 ​​있다는 것을 확신합니다. – DoctorMick

답변

7

코드에 서비스 참조를 추가 할 때 Advanced을 선택하면 Reuse types in referenced assemblies 옵션이 표시됩니다. 선택되어 있는지 확인하고 참조가 프로젝트에 추가되면 WCF는 프록시 유형을 생성하지 않고 참조 된 유형을 대신 사용합니다.

서비스 참조를 이미 추가 한 경우 먼저 공유 형식을 참조한 다음 서비스 참조를 마우스 오른쪽 단추로 클릭하고 Configure Service Reference을 선택하면 참조 된 형식을 사용하여 클라이언트 코드를 다시 생성 할 수 있습니다.

+0

이 hadnt는 전에 근무했다. 그러나 이번에리스트에서 단지 필요한 어셈블리를 골랐고 잘 작동했다. doh! – nat

5

아니, 당신이 그것을 할 수있는 등 지금 매우 행복받은 어떤 도움이 : 여기 내 질문을 참조하십시오

WCF Service Reference generates its own contract interface, won't reuse mine

할 수는 인터페이스, 유형이있는 공유 어셈블리가 있어야하며 서비스와 클라이언트 모두이를 참조 할 수 있습니다.

'reuse referenced types ..'옵션은 복잡한 유형을 다루지 만 위의 대답은 인터페이스 유형 재사용에 대해서도 다루고 있습니다. IMO는 훨씬 더 나은 옵션이며 해당 VS 옵션으로는 다루지 않습니다.

0

서비스 참조 추가의 고급 설정에서 "참조 된 어셈블리의 재사용 유형"을 선택하면 참조 된 어셈블리의 것과 일치하는 모든 데이터 계약이 재사용되고 다시 생성되지 않습니다.