WCF中JSON的接口隔离
我是WCF的新手。我想知道我们是否可以在REST输出中从基本接口检索属性 请考虑以下结构。产品包括iVenuView,而不是场地。是否可以在产品JSON响应中仅包含vention.IdWCF中JSON的接口隔离,wcf,json,interface,properties,Wcf,Json,Interface,Properties,我是WCF的新手。我想知道我们是否可以在REST输出中从基本接口检索属性 请考虑以下结构。产品包括iVenuView,而不是场地。是否可以在产品JSON响应中仅包含vention.Id [DataContract] public class Product { [DataMember] public Guid? Id { get; set; } [DataMember] public string Name { get; set;
[DataContract]
public class Product {
[DataMember]
public Guid? Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public IVenueView Venue { get; set; }
}
public interface IVenueView {
[DataMember]
Guid? Id { get; set; }
}
[DataContract]
public class Venue : IVenueView
{
[DataMember]
public Guid? Id { get; set; }
[DataMember]
public string Name { get; set; }
}
数据合同都是关于数据的——接口定义了行为,因此它们不会真正混淆。您拥有的数据约定可能不起作用(因为序列化程序不“知道”场地类型(它只知道IVenueView),它将无法序列化/反序列化产品实例。不,这是不可能的,因为序列化和反序列化与实现一起工作(实际数据)不使用接口。此外,对于纯序列化,您必须使用以下内容:
[DataContract]
[KnownType(typeof(Venue))]
public class Product
{
[DataMember]
public Guid? Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public IVenueView Venue { get; set; }
}
这不起作用。使用svcuti.exe时,客户端中的场地属性为object类型。