代碼演示W(wǎng)CF Data Contract序列化引擎案例
WCF經(jīng)過長時間的發(fā)展,很多用戶都很了解WCF Data Contract了,這里我發(fā)表一下個人理解,和大家討論討論。在WCF Data Contract中如果存在向下造型的情況時你就會用到KnownTypeAttribute類以保證在反序列化時引擎能知道應(yīng)該使用哪個具體的類型。
#T#主要有以下幾種典型的情況:發(fā)送的數(shù)據(jù)契約類型是從接收端期望接收的數(shù)據(jù)契約類型繼承的。聲明的數(shù)據(jù)類型是接口(注意:集合接口除外,具體請看稍后的WCF Data Contract之集合類型),聲明的數(shù)據(jù)類型是Object.在數(shù)據(jù)契約中的數(shù)據(jù)成員包含前面三種的任何一種時。例如:在Hashtable內(nèi)部使用Object來保存實際對象,所以在接收端并不能確定其中對象的實際類型,此時你需要增加KnownType來告訴反序列化引擎應(yīng)該使用哪個具體的類型。
- [DataContract]
 - public class ClassA
 - {
 - [DataMember]
 - public string name;
 - }
 - [DataContract]
 - public class ClassB : ClassA
 - {
 - [DataMember]
 - public int department;
 - [DataMember]
 - public string title;
 - [DataMember]
 - public int salary;
 - }
 - Public interface InterfaceA
 - {
 - String GetSomething();
 - }
 - [DataContract]
 - Public calss ImplA:InterfaceA
 - {
 - Public String GetSomething()
 - {
 - Return “don’t know”;
 - }
 - }
 - [DataContract]
 - Public calss ImplB:InterfaceA
 - {
 - Public String GetSomething()
 - {
 - Return “don’t know”;
 - }
 - }
 - [DataContract]
 - Public class ClassC{}
 - [DataContract]
 - Public class ClassD{}
 - [DataContract]
 - Public class ClassWillProcess
 - {
 - [DataMember]
 - ClassA ca;
 - [DataMember]
 - InterfaceA ia;
 - [DataMember]
 - ArrayList arraylist1;
 - [DataMember]
 - Object numberValue;
 - }
 















 
 
 


 
 
 
 