[原创]谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持

通过第一部分的介绍,我们可以体会到,WCF Data ContractCLR TypeNeutral Contract之间搭建了一座桥梁,弥合了.NET世界和厂商中立世界的差异。通过WCF Data Contract我们将CLR Data Type暴露成一个厂商中立的数据结构的描述,同样通过WCF Data Contract我们将一个现有的CLR Data Type和既定的Neutral contract进行适配。

.NET中,基于Primary Type,比如Int32String等等,他们具有一个简单的默认的序列化方式和结构,可以说他们不需要Data Contract。接下来我们主要讨论的是一些相对比较特殊的、完全基于.NETData Type,比如GenericCollection,和Dictionary。首先,我们结合例子来谈谈基于GenericData TypeData Contract

假设我们需要创建一个用于处理一些单据(Bill)的Service,比如如Order BillSales Bill等。一般的单据都有一个单据头(Header)和明细(Detail)列表,为此我们创建了一个GenericBill。并

namespace Artech.SpecialDataContract.Contract
{
    [DataContract]
    
public class Bill<THeader, TDetail>
    
{
        [DataMember]
        
public THeader Header
        
getset; }

        [DataMember]
        
public IList<TDetail> DetailList
        
getset; }
    }


    [DataContract]
    
public class OrderHeader
    
{
        [DataMember]
        
public Guid OrderID
        
getset; }

        [DataMember]
        
public DateTime OrderDate
        
getset; }
    }


    [DataContract]
    
public class OrderDetail
    
{
        [DataMember]
        
public Guid ProductID
        
getset; }

        [DataMember]
        
public int Quantity
        
getset; }
    }


}

NET技术[原创]谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。