2010-03-23 4 views
1

여러 개의 인터페이스가 있습니다. 이들 모두는 단일 계약 인터페이스에 의해 계승되고 공개되어야합니다.여러 인터페이스에서 WCF 계약을 작성하려면 어떻게해야합니까?

interface A { void X(); } 
interface B { void Y(); } 

interface C: A, B {} // this is the public contract 

어떻게 가능합니까? A와 B에 ServiceContract를 추가 할 수 없기 때문에 여러 끝점으로 이어질 수 있습니다. 그리고 나는 C에서 모든 메소드를 새롭게 오버라이드하고 싶지 않습니다.

답변

1

[ServiceContract]과 같은 속성이 이 아니고이 상속 된 것이 틀림 없습니다. 서비스 계약이어야하는 인터페이스에 명시 적으로 설정해야합니다. 구체적인 데이터 클래스의 속성에도 동일하게 적용됩니다. 즉, 상속되지 않습니다. 데이터 계약의 자손 클래스 자체가 데이터 계약이어야하는 경우 명시 적으로 많이 표시해야합니다. 기본적으로 WCF는 사용자의 의도에 대해 매우 명료하게하려고 시도합니다 (좋은 말입니다).

이와 같은 인터페이스를 작성할 때 얻을 수있는 이점을 잘 모르는 경우가 많지만 유효한 WCF 서비스 계약 (인터페이스)을 여러 개 구현 한 서비스 구현 (구체적인 클래스)이 있어야합니다.

+0

그냥 명확히하기 위해 : 나는 하나의 계약에 대해 이야기하고 있습니다. 이 계약은 여러 인터페이스로 구성됩니다. – mafu

1

질문을 쓰는 동안 알아 냈다고 생각합니다. 이 질문은 같은 질문을하는 사람들에게 도움이 될 수 있습니다 ...

[OperationContract]은 기본 인터페이스 (A와 B 모두)의 모든 노출 된 메소드에 을 추가하고 구성된 인터페이스 C?

I 이렇게 I 아직도의 ServiceContract뿐만 아니라 하위 인터페이스 ( [...] OperationContractAttribute can only be used on methods in ServiceContractAttribute types or on their CallbackContract types.)에인가되지 않는 경우 InvalidOperationException이 제기된다

피드백을 :) 환영 그래서이 추측 지금이 응답을 확인할 수

필수.

+1

나는 두 가지 상황에서 그것을 해냈다. – veggerby

0

아마도 도움이 될까요? http://www.meineck.net/2008/04/wcf-hosting-multiple-wcf-services-as.html

원하는지 확실하지 않지만 부분 클래스를 사용하여 단일 종점에서 여러 서비스를 호스팅하는 방법을 설명합니다.

+0

오, 여기서는 계약 자체에 대해서만 말하고 구현은 아닙니다. 귀하의 대답은 내 다른 질문에 적용 : http://stackoverflow.com/questions/2446310/how-can-i-avoid-huge-communication-classes-in-wcf – mafu

관련 문제