У меня есть служба 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.
Надеюсь, я не запутался ...