Используемый тип реализации контракта определяется при создании экземпляра ServiceHost
. Если у вас есть несколько конечных точек, обслуживаемых одним и тем же ServiceHost, он создаст экземпляр одного типа для ответа на запросы к этим конечным точкам.
Если вы хотите, чтобы две конечные точки для одного и того же контракта использовали разные реализации, у вас есть два варианта:
- выставить две конечные точки на двух отдельных сервисных хостах. (Либо путем создания двух
ServiceHost
экземпляров, либо путем указания двух <service>
элементов конфигурации);
- имеет составную реализацию для класса, которая имеет две отдельные реализации одного и того же интерфейса (через любой подход ООП, о котором вы только можете думать) и отправляет вызовы к ним на основе адреса конечной точки.
Я бы лично придерживался первого подхода. Если вы выберете второй подход, вы, по сути, будете реализовывать ServiceHost
сами.