Я использую интерфейс в качестве входного параметра в OperationContract. Но когда я генерирую прокси-класс на стороне клиента, метод клиента выглядит так: GetDat (значение объекта) вместо GetData (значение IMyObj)
- Интерфейс службы
[ServiceContract]
[ServiceKnownType(typeof(MyObj))]
public interface IService
{
[OperationContract]
string GetData(IMyObj value);
}
Класс обслуживания
public class Service : IService
{
public string GetData(IMyObj value)
{
return string.Format("You entered: {0}", value.MyValue);
}
}
Интерфейс
public interface IMyObj
{
int MyValue { get; set; }
}
Контракт данных
[DataContract]
[KnownType(typeof(IMyObj))]
public class MyObj : IMyObj
{
[DataMember]
public int MyValue { get; set; }
}
Примечание: Есть много похожих вопросов о стеке потока относительно параметров интерфейса и wcf. Но все они говорят использовать атрибут ServiceKnownType и KnownTypeAttribute (что я и сделал). Но он по-прежнему дает вызывающему методу на стороне клиента объект типа параметра вместо моего типа интерфейса.