Вы можете добавить другую конечную точку, используя различную привязку (например, NetTcpBinding
). Но это просто грязно.
Так называемый класс composer - это то, как обычно решается эта проблема.Тем не менее, я не вижу, как неспособность изменить реализацию ServiceA
приводит к проблеме здесь ...?
Создать простой класс-обертку, с реальной логикой обслуживания, все еще находящейся в конкретных выделенных классах (вы выигралине надо ничего менять)Все, что сделает этот класс, будет реализовать контракт и делегировать работу надлежащим разработчикам:
public class ComposedServices : IServiceA, IServiceB
{
private IServiceA serviceA;
private IServiceB serviceB;
public ComposedServices(IServiceA serviceA, IServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void SomeMetodFromA()
{
this.serviceA.SomeMethodFromA();
}
}
ComposedServices
единственная цель существования - преодолеть технические ограничения -Сам по себе он не имеет никакой ценности и практически не должен связываться с логикой.