나는 여러 가지 방법을 제공하는 WCF 서비스를 가지고 있습니다.Upcasting ServiceContract
내 응용 프로그램은이 서비스를 사용하며 ServiceContract에는 일부 메서드에만 OperationContract 정의가 포함되어 있습니다.
코드 예제에 따라 질문에 잘라 고려 :[ServiceContract]
public interface IServer
{
[OperationContract]
void BasicOperation();
}
[ServiceContract]
public interface IExtendedServer : IServer
{
[OperationContract]
void ExtendedOperation();
}
내가 해당 응용 프로그램이 확장 기능이 있으므로 계약을하고 싶습니다. 즉, 나는 어디서나 IServer 계약을 사용할 수 있기를 원하지만, 플러그인과 같은 아키텍처가 기본 계약 인터페이스를 확장 할 수 있도록 플러그인 자체가 ExtendedOperation()
운영 계약을 호출 할 수 있도록합니다.
그렇다면 코드를 구조화하거나 다음과 같은 작업을 수행하려면 어떻게 변경해야합니까? 'Contract.IExtendedServer'을 입력 할 투명 프록시를 캐스팅 할 수 없습니다 : 나는이 작업을 수행 할 때 나는 오류를
System.InvalidCastException를 얻을
((IExtendedServer)channel).ExtendedOperation()
(채널 유형 IServer이다). 내가 혼동되지 않았습니다 희망
...
+1 사려 깊은 추론을 통해 구체적인 대안을 제공합니다. – David
감사합니다. 나는 내 자신의 추론에서 다소 모호했지만, 약간의 아이디어가 있었지만, 특히 좋은 설명을 한 후에 붙이지 않는 것 같았다. –