2014-02-14 7 views
3

portType 요소를 가져 오는 스키마 파일 중 하나에서 사용하는 것과 동일한 네임 스페이스에 정의 된 Java 기반 서비스에 액세스해야합니다. 아쉽게도 해당 스키마에는 portType과 같은 이름의 complexType이 포함되어 있습니다.서비스 참조 이름 변경 참조

문제는 "서비스 참조 추가"서비스 계약의 이름을 만들 수 portType의 이름을 사용하고 complexType의 이름으로 class를 생성하는 - 그리고 그것은 같은 .NET 네임 스페이스를 만듭니다. 작동하지 않습니다!

"서비스 참조 추가"대화 상자 또는 .svcmap 파일에서 서비스 계약 유형의 "이름 바꾸기"중 하나를 수행 할 수 있습니까?


밀접하게 관련 질문은 -입니다 거기 portTypecomplexType 서로 다른 네임 스페이스 (IMHO으로, 그들은 해야한다)에 있다면 나는 이것에 대해 할 수있는 일이?

답변

-1

Visual Studio에서 솔루션 탐색기에서 프로젝트를 선택할 수 있으며 맨 위에 작은 아이콘 모음이 있습니다. 마우스를 오른쪽 위로 가져 가면 "모든 파일 표시"라는 파일이 나타납니다. 이렇게하면 서비스 참조에 의해 생성 된 클래스와 같은 숨겨진 파일이 표시됩니다 (이제 확장 할 화살표가 있어야합니다).

귀하는 이러한 클래스를 완전히 제어 할 수 있습니다. 이름을 바꿔 다른 네임 스페이스에 넣을 수 있습니다.

+0

이러한 클래스를 완벽하게 제어 할 수는 없습니다. 다음 번에 "업데이트 서비스 참조"를 덮어 쓰게됩니다. 생성 된 코드를 편집하는 것은 거의 항상 나쁜 생각입니다. –

1

dustinmorris가 제안한대로 생성 된 클래스를 편집 할 수 있습니다. 그러나 서비스 참조를 업데이트해야하는 경우 이러한 클래스를 다시 생성하기 때문에 문제가됩니다.

당신이 제안한대로 두 개의 다른 네임 스페이스로 분할하는 것이 더 좋을 것입니다.

가능한 한 최상의 해결책은 가능한 경우 Java 서비스를 수정하고 두 충돌하는 항목에 더 의미있는 이름을 지정하여 서비스를 더 잘 이해할 수 있도록하는 것입니다.

3

짧은 답변은 불행히도 "아니오"라고 생각합니다.

인터페이스에서 모호성을 제거하기 위해 Java 서비스의 관리자를 설득하려고 시도 할 수 있습니까? 옵션의 나머지가 잘되지 않기 때문에 그렇다면, 나는 힘껏이 변경 로비 좋을 것 :

당신 서비스를 강제로 .svcmap 파일의 ExcludedTypes 요소를 사용하여 시도 할 수 이 참조가 portType과 충돌하는 complexType을 생성하지 않습니다. 실제로 complexType을 사용해야하는 경우 수동으로 구현해야합니다. 이는 불만입니다.

Reference.cs 파일을 수동으로 편집하여 다른 유형과 마찬가지로 충돌 유형 중 하나의 이름을 변경할 수 있습니다. 그러나 코드를 유지 관리하는 모든 사람들은 서비스 참조가 재생성 될 때마다이 수동 편집을 수행해야한다는 것을 기억해야합니다. 이는 불만입니다.

당신 .svcmap 파일의 NamespaceMappings 요소와 플레이하지만, 그것은 단지 당신이 안됐다 전체 네임 스페이스, 네임 스페이스 내에서 개인이 아닌 유형의 이름을 변경 할 수 있습니다.

당신 (이것은 portType에서 생성되는 유형이라고 가정) 수동으로 서비스 계약 인터페이스를 만든 다음 대신 해당 유형을 사용하도록 .svcmap 파일의 ServiceContractMappings 요소를 사용할 수있는 자동 생성을 . 그러나 물론 인터페이스를 수동으로 유지해야 할 것입니다. 이는 불만입니다. 서비스 유지자가 서비스를 변경하도록 설득 할 수없는 경우 이는 아마도 가장 좋은 옵션입니다.