数据契约的定义与数据契约序列化器(2.2)
时间:2011-12-27 23:31来源: 作者:admin 点击: 次
如果默认序列化后的XML结构不能满足我们的要求,可以通过DataContractAttribute和DataMemberAttribute相应的属性对其进行修正。在重新定义的数据契约中,我们通过DataContractAttribute设置了数据契约的名称和命名空间;通过DataMemberAttribute的Name属性为ID和Date两个属性设置了不同于属性名称的数据成员名称,并通过Order控制了数据成员的先后次序。那么调用相同的程序,最终被序列化出来的XML将会如下所示。
-
namespace
Artech.DataContractSerializerDe mos -
{
-
Namespace="http://www.artech.com/")][DataContract( -
public class OrderBase -
{ -
Name[DataMember( = "OrderID",Order=1)] -
public Guid ID -
{ get; set; } -
-
Name[DataMember( = "OrderDate",Order = 2)] -
public DateTime Date -
{ get; set; } -
-
Order[DataMember( = 3)] -
public string Customer -
{ get; set; } -
-
Order[DataMember( = 4)] -
public string ShipAddress -
{ get; set; } -
-
public double TotalPrice -
{ get; set; } -
} -
-
Name="Ord",[DataContract( Namespace="
http://www.artech.com/")] -
public class Order : OrderBase -
{ -
Order[DataMember( = 1)] -
public string PaymentType -
{ get; set; } -
} -
}
-
<Ord
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" -
xmlns="http://www.artech.com"> -
<OrderID>ba3bc051-6c02-41dd-9f97-ae745ac5f1dd</OrderID> -
<OrderDate>2008-12-03T00:00:00+08:00</OrderDate> -
<Customer>NCS</Customer> -
<ShipAddress>#328,Airport Rd, Industrial
Park,Suzhou JiangSu -
</ShipAddress>Province -
<PaymentType>CreditCard </PaymentType> -
</Ord>
