Это просто опечатка, или это действительно так в вашей модели? Модельный класс должен быть украшен [DataContract]
, а не [DataMember]
. Должно быть так:
[DataContract]
public class BikeModel : IBike
{
[DataMember]
public string BikeName { get; set; }
}
ОБНОВЛЕНИЕ: хорошо, это была просто опечатка.
Вы можете попробовать это? Превратите ваш IBike
интерфейс в BaseBike
базовый класс:
public class BaseBike
{
string BikeName { get; set;}
}
и затем верните этот базовый тип из вашего звонка
[ServiceContract]
[ServiceKnownType(typeof(BikeModel))]
public interface IService1
{
[OperationContract]
BaseBike GetBike();
}
Это вообще что-то меняет? Я знаю, что WCF немного требователен к тому, что можно сериализовать - поскольку все, что сериализуется, должно быть представимо в XML-схеме, вы не можете легко использовать интерфейсы и / или универсальные шаблоны.
Другой вариант, который вы можете попробовать, - использовать более сфокусированный атрибут [KnownType]
в операции вместо [ServiceKnownType]
. Опять же - не уверен, поможет ли это, я ловлю идеи здесь .... (ваш материал выглядит нормально с точки зрения .NET - но общение с WCF не всегда совпадает с миром ....)