日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
WCF序列化依賴(lài)屬性詳細(xì)介紹

WCF開(kāi)發(fā)框架作為一款功能強(qiáng)大的跨平臺(tái)解決方案,其中包含的操作方法和各種知識(shí)是相當(dāng)繁雜的。我們需要不斷的去熟練操作,才能掌握這一知識(shí)點(diǎn)。我們先來(lái)了解下WCF序列化依賴(lài)屬性相關(guān)概念。#t#

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)西鄉(xiāng)塘,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18980820575

眾所周知.NetFramework中存在著兩種依賴(lài)屬性,他們也分別集成著不同但名稱(chēng)相同的依賴(lài)對(duì)象:

System.Windows.DependencyProperty:System.Windows.DependencyObject

System.Workflow.ComponentModel.DependencyProperty:System.Workflow.ComponentModel.DependencyObject

System.Window.DependencyProperty主要用于WPF中,我們可以以注冊(cè)的形式聲明這種‘特別’的屬性,聲明中可以設(shè)置Metadata,PropertyChangeCallBack...等等,讓我能用幾句簡(jiǎn)單的代碼來(lái)實(shí)現(xiàn)強(qiáng)大的WPF操作。

System.Workflow.ComponentModel.DependencyProperty相對(duì)于前者,是一個(gè)簡(jiǎn)化版本,只可以在聲明中可以設(shè)置Metadata,但對(duì)于WorkflowFoundation這就足夠用了。

兩種依賴(lài)屬性對(duì)各自的技術(shù),都不同程度的提供了很好的支持,讓我們?cè)趯?shí)際開(kāi)發(fā)中能夠更高效的書(shū)寫(xiě)代碼,但是我們能不能像一般的屬性那樣隨意聲明,并運(yùn)用?至少在WCF序列化依賴(lài)屬性中我們很難使用這種特殊的屬性。

以工作流中的System.workflow.ComponentModel.DependencyObject為例

如果我們想像一般自定義類(lèi)那樣,在聲明完DataContract和DataMember后便可在基于WCF的應(yīng)用程序中應(yīng)用,會(huì)遇到UserData這個(gè)繼承于IDictionary的討厭屬性在WCF中無(wú)法序列化。如:

 
 
 
  1. [DataContract]  
  2. public class WorkFlowParameter : 
    DependencyObject  
  3. {  
  4. public static readonly Dependency
    Property IDProperty =  
  5. DependencyProperty.Register("ID", 
    typeof(Guid), typeof(WorkFlowParameter),
    new PropertyMetadata("UserDefinedProperty"));  
  6. [DataMember]  
  7. public Guid ID  
  8. {  
  9. get { return (Guid)GetValue(IDProperty); }  
  10. set { SetValue(IDProperty, value); }  
  11. }  

像這樣一個(gè)看起來(lái)很平常的類(lèi),在WCF序列化依賴(lài)屬性應(yīng)用中,我們只能無(wú)語(yǔ)了。

為了使得包含依賴(lài)屬性的自定義類(lèi)能在WCF中正常使用

我們可以以下面的步驟自己動(dòng)手寫(xiě)序列化方法

1.在自定義類(lèi)中繼承ISerializable接口,并實(shí)現(xiàn)構(gòu)造函數(shù)以及GetObjectData方法

如:

 
 
 
  1. public class WorkFlowParameter :
     DependencyObject,ISerializable  
  2. {  
  3. //在Deserialize時(shí)使用  
  4. public WorkFlowParameter(SerializationInfo
     info, StreamingContext context)   
  5. {  
  6. ID = new Guid (info.GetString("ID"));  
  7. ParameterName = info.GetString("ParameterName");  
  8. }  
  9. //在Serialize時(shí)調(diào)用,把除了UserData
    以外我們自定義的屬性添加進(jìn)來(lái)進(jìn)行序列化  
  10. public void GetObjectData(SerializationInfo 
    info, StreamingContext context)  
  11. {  
  12. IList properties = 
    DependencyProperty.FromType(this.GetType());  
  13. if(properties.Count > 0)  
  14. {  
  15. foreach(DependencyProperty property
     in properties)  
  16. {  
  17. if(property.Name != "UserData")  
  18. {  
  19. info.AddValue(property.Name,
     GetValue(property));  
  20. }  
  21. }  
  22. }  
  23. }  

2.經(jīng)過(guò)我們自定義序列化后,我們可以正常使用了

如果你遇到類(lèi)型XXXX不能為 ISerializable,且不能具有 DataContractAttribute 屬性這時(shí)候我們需要在WCF序列化依賴(lài)屬性中,我們可以把類(lèi)中的

 
 
 
  1. [DataContract]去掉  
  2. [DataContract]//去掉  
  3. public class Work
    FlowParameter :
     DependencyObject 

再試試,大功告成了。呵呵。


文章標(biāo)題:WCF序列化依賴(lài)屬性詳細(xì)介紹
標(biāo)題路徑:http://www.5511xx.com/article/djhcceo.html