Интерфейсы неправильно представлены в прокси-объектах

Использование многих отлично examples на этом веб-сайте, я получил свою службу WCF для правильной сериализации и десериализации конкретных объектов типов интерфейса по сети. К сожалению, почему мне кажется, что не хватает поддержки клиентов.

Пользователь получил метаданные из моей службы и использует их для автоматического создания ссылки на службу в Visual Studio 2012 с помощью «добавить ссылку на службу». Они жалуются, что в их reference.cs (и, следовательно, в их всплывающих подсказках по автозаполнению) интерфейсы не встречаются и заменяются объектами.

Например, в моем файле кода интерфейса службы:

[ServiceKnownType(typeof(ConcreteObject))]
...
[OperationContract]
bool WorkMethod(IMyInterface argument1);
...

но то, что они видят, это:

...
[OperationContract]
bool WorkMethod(object argument1);
...

Как указано выше, моя клиентская библиотека работает нормально, потому что я понимаю, что «объект» на самом деле означает «IMyInterface». Но это непонятно другому клиенту. Как заставить сгенерированные прокси-объекты включать интерфейсы и правильно представлять тип запроса?

Заранее спасибо!


Изменить: пример интерфейса по запросу.

public interface IMyInterface
{
    bool DoWork(int i);

    string SomeProperty { get; }
}

[DataContract]
[KnownType(typeof(IMyInterface))]
public class ConcreteObject : IMyInterface
{
    //Working implementation here.
    ...
}

person Steve H.    schedule 15.01.2015    source источник
comment
Опубликуйте пример вашего IMyInterface. Возможно, вам потребуется атрибутировать его с помощью DataContractAttribute.   -  person jparram    schedule 15.01.2015
comment
DataContract доступен только для объектов, структур и перечислений. Есть ли другой атрибут, о котором я не знаю, который достигает этого?   -  person Steve H.    schedule 15.01.2015
comment
Разве вашему ConcreteObject не нужно реализовывать интерфейс? public class ConcreteObject : IMyInterface   -  person Bensonius    schedule 15.01.2015
comment
правильно. Я думаю, вам придется указать конкретный тип. см. stackoverflow.com/questions/4720730/< /а>   -  person jparram    schedule 15.01.2015
comment
Да, Бенсониус, это так. Забыл добавить его в этот урезанный пример. Фиксированный ;)   -  person Steve H.    schedule 16.01.2015
comment
Вы не можете использовать интерфейс в качестве параметра или возвращаемого типа в операции. Его нельзя представить в WSDL. Вам нужно будет использовать конкретный тип.   -  person John Saunders    schedule 16.01.2015