В MyClient.IService используется тот же метод, что и в MyServer.IService. Фабрика каналов WCF считает, что контракт соответствует указанному URL, и, следовательно, обрабатывает запрос.
Попробуйте изменить имя метода MyClient.IService, и вы увидите, что оно не работает. Пространство имен - это логические разделения, как мы знаем.
Когда вы создаете службу WCF и выставляете wsdl, у него нет ни одного из ваших пространств имен, если только вы не укажете одно из них в своей конфигурации, используя атрибут bindingNamespace в своем элементе конечной точки. Просто попробуйте пример и сгенерируйте прокси из wsdl, чтобы увидеть, что прокси не имеет пространства имен.
Пока IService в вашем пространстве имен MyClient и MyServer совпадает с указанным выше кодом WCF, будет работать
В отношении вашего кода ниже:
MyClient.IService iservice = (MyClient.IService)new MySpace.Service();
Вы пытаетесь явным образом привести MySpace.Service к MyClient.IService, где ваша «Служба» не реализует ваш MyClient.IService и является правильной в соответствии с ООП. Поскольку у вас есть весь код в одном файле и он размещен самостоятельно, это может ввести вас в заблуждение.