У меня есть служба (Service1), которая использует другую услугу (Service2). Я использую внедрение зависимостей для обеих служб и мне нужно внедрить прокси для Service2 в Service1.
Я не уверен, как справиться с тем фактом, что прокси-сервер - это не простой класс типа IService2, а прокси-сервер, наследующий также от ClientBase. Очевидно, что моя реализация Service1 должна открыть прокси-сервер и должна также закрыть его после использования или прервать его, если происходит исключение, но если я просто внедряю экземпляр IService2, то я не могу сделать это (без приведения), потому что методы Open, Close и Abort находятся в базовом классе, а мои операции в интерфейсе.
Когда дело доходит до тестирования Service1, я ожидал бы просто смоделировать интерфейс, но если реализация Service1 ожидает методы Open, Close и Abort, то это сложно. В прошлом я делал что-то подобное, но должен быть лучший способ!
var proxyBase = _service2 as ClientBase;
if (proxyBase != null)
{
proxyBase.Open();
}
_service2.DoOperation("blah"); //the actual operation
if (proxyBase != null)
{
proxyBase.Close();
}
// repeat for Abort in exception handler(s).
Что делают другие люди?
Спасибо