技术开发 频道

WCF中的Data Contract:对Generic的支持


   如何我们现在Host基于这样一个Contract的Service,你猜我们作为参数的数据类型将会如何体现的。

   通过WSDL,我们会发现该Service的Data Contract将会以下面一段XSD的方式来呈现:

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/Artech.SpecialDataContract.Contract"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/Artech.SpecialDataContract.Contract"
xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/">
<xs:import schemaLocation="http://artech/Artech.SpecialDataContract/BillManagerService.svc?xsd=xsd1"
namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xs:complexType name="BillOfOrderHeaderOrderDetailLZ9Dq20o">
<xs:annotation>
<xs:appinfo>
<GenericType Name="BillOf{0}{1}{#}" Namespace="http://schemas.datacontract.org/2004/07/Artech.SpecialDataContract.Contract"
xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<GenericParameter Name="OrderHeader" Namespace="http://schemas.datacontract.org/2004/07/Artech.SpecialDataContract.Contract"/>
<GenericParameter Name="OrderDetail" Namespace="http://schemas.datacontract.org/2004/07/Artech.SpecialDataContract.Contract"/>
</GenericType>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" name="DetailList" nillable="true" type="tns:ArrayOfOrderDetail"/>
<xs:element minOccurs="0" name="Header" nillable="true" type="tns:OrderHeader"/>
</xs:sequence>
</xs:complexType>
<xs:element name="BillOfOrderHeaderOrderDetailLZ9Dq20o" nillable="true" type="tns:BillOfOrderHeaderOrderDetailLZ9Dq20o"/>
<xs:complexType name="ArrayOfOrderDetail">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="OrderDetail" nillable="true" type="tns:OrderDetail"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfOrderDetail" nillable="true" type="tns:ArrayOfOrderDetail"/>
<xs:complexType name="OrderDetail">
<xs:sequence>
<xs:element minOccurs="0" name="ProductID" type="ser:guid"/>
<xs:element minOccurs="0" name="Quantity" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="OrderDetail" nillable="true" type="tns:OrderDetail"/>
<xs:complexType name="OrderHeader">
<xs:sequence>
<xs:element minOccurs="0" name="OrderDate" type="xs:dateTime"/>
<xs:element minOccurs="0" name="OrderID" type="ser:guid"/>
</xs:sequence>
</xs:complexType>
<xs:element name="OrderHeader" nillable="true" type="tns:OrderHeader"/>
</xs:schema>
0
相关文章