У меня есть служба WCF, которая предоставляет множество методов.
Мое приложение использует этот сервис, а ServiceContract включает определения OperationContract только для некоторых методов.
Чтобы перейти к вопросу, рассмотрим следующий пример кода:
[ServiceContract]
public interface IServer
{
[OperationContract]
void BasicOperation();
}
[ServiceContract]
public interface IExtendedServer : IServer
{
[OperationContract]
void ExtendedOperation();
}
Я бы хотел заключить контракт, чтобы приложение имело возможность расширения. Другими словами, я хотел бы иметь возможность везде использовать контракт IServer, но позволить плагиноподобной архитектуре расширять базовый интерфейс контракта, чтобы сам плагин мог вызывать ExtendedOperation()
контракт операции.
Итак, как мне структурировать мой код или какие изменения я должен внести, чтобы иметь возможность выполнять что-то вроде следующего? (канал имеет тип IServer)
((IExtendedServer)channel).ExtendedOperation()
Когда я пытаюсь это сделать, я получаю сообщение об ошибке
System.InvalidCastException: Невозможно привести прозрачный прокси к типу 'Contract.IExtendedServer'.
Надеюсь, я не запутался ...