成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF依賴屬性具體概念詳解

開發 開發工具
WCF依賴屬性在.NetFramework中存在著兩種方式,他們分別集成了不同的依賴對象,但是名稱卻相同。在這里我們將會為大家詳細介紹一下相關內容。

WCF開發插件功能非常強大,其中有很多比較重要的功能特點值得我們去深入研究。在這篇文章中我們就為大家詳細介紹了一下其中一個重要的基礎知識,關于WCF依賴屬性的相關介紹。#t#

眾所周知.NetFramework中存在著兩種WCF依賴屬性,他們也分別集成著不同但名稱相同的依賴對象:

System.Windows.DependencyProperty:System.Windows.DependencyObject

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

System.Window.DependencyProperty主要用于WPF中,我們可以以注冊的形式聲明這種‘特別’的屬性,聲明中可以設置Metadata,PropertyChangeCallBack...等等,讓我能用幾句簡單的代碼來實現強大的WPF操作。

 

System.Workflow.ComponentModel.DependencyProperty相對于前者,是一個簡化版本,只可以在聲明中可以設置Metadata,但對于WorkflowFoundation這就足夠用了。

 

兩種WCF依賴屬性對各自的技術,都不同程度的提供了很好的支持,讓我們在實際開發中能夠更高效的書寫代碼,但是我們能不能像一般的屬性那樣隨意聲明,并運用?至少在WCF中我們很難使用這種特殊的屬性。

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

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

 

  1. [DataContract]  
  2. public class WorkFlowParameter : DependencyObject  
  3. {  
  4. public static readonly DependencyProperty 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. }  

 

 

像這樣一個看起來很平常的類,在WCF應用中,我們只能無語了。

 

為了使得包含WCF依賴屬性的自定義類能在WCF中正常使用

我們可以以下面的步驟自己動手寫序列化方法

1.在自定義類中繼承ISerializable接口,并實現構造函數以及GetObjectData方法

如:

 

  1. public class WorkFlowParameter : DependencyObject,ISerializable  
  2. {  
  3. //在Deserialize時使用  
  4. public WorkFlowParameter(SerializationInfo info, 
    StreamingContext context)   
  5. {  
  6. ID = new Guid (info.GetString("ID"));  
  7. ParameterName = info.GetString("ParameterName");  
  8. }  
  9. //在Serialize時調用,把除了UserData以外我們自定義的屬性添加進來進行序列化  
  10. public void GetObjectData(SerializationInfo info, 
    StreamingContext context)  
  11. {  
  12. IList<DependencyProperty> 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.經過我們自定義序列化后,我們可以正常使用了

 

如果你遇到類型XXXX不能為 ISerializable,且不能具有 DataContractAttribute 屬性這時候我們需要在WCF服務中,我們可以把類中的

[DataContract]去掉

 

[DataContract]//去掉

public class WorkFlowParameter : DependencyObject

 

 

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

以上就是對WCF依賴屬性的相關介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-01 14:53:42

C++屬性

2009-12-07 16:57:39

WCF安全性

2009-12-31 17:21:41

Silverlight

2010-02-23 16:32:29

WCF服務

2010-02-24 17:17:04

WCF宿主環境

2010-02-26 14:39:27

WCF服務寄宿

2009-12-21 17:05:59

WCF自托管宿主

2009-12-21 15:33:07

WCF集合元素

2010-02-23 14:48:38

WCF事件通知

2009-12-22 14:31:27

WCF序列化依賴屬性

2009-12-28 16:54:30

WPF注釋

2010-02-24 16:30:52

WCF常見錯誤

2009-12-30 14:36:29

Silverlight

2009-12-24 15:36:41

WPF邏輯樹

2009-12-31 15:31:15

ADO.NET特性

2010-02-25 11:23:29

WCF返回自定義格式

2010-02-26 15:53:35

WCF套接字連接中斷

2009-12-28 14:32:31

WPF窗體對話框

2009-12-21 18:19:19

WCF地址類型

2009-12-08 10:21:17

WCF地址
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日碰碰 | 国产精品久久久久久久久污网站 | 中文字幕在线观看一区 | 欧美日韩国产一区二区三区不卡 | 久久久爽爽爽美女图片 | 国产精品免费一区二区三区四区 | 精品在线一区二区 | 精品入口麻豆88视频 | 中文字幕在线免费观看 | 亚洲精品99| 亚洲午夜视频在线观看 | 精品久久久久久亚洲国产800 | 亚洲视频在线看 | 久在草| 精品免费国产一区二区三区四区介绍 | 日韩精品在线视频免费观看 | 中文字幕一级毛片视频 | 欧美黄视频 | 免费在线播放黄色 | 午夜国产精品视频 | 午夜二区| 97国产爽爽爽久久久 | 国产99久久久国产精品 | 天天躁人人躁人人躁狂躁 | 99在线免费观看视频 | 羞羞视频免费观 | 亚洲免费网 | 久久久人成影片免费观看 | 国产99久久久国产精品下药 | 亚洲精品日韩在线 | 亚洲精品无| 香蕉视频黄色 | 中国三级黄色录像 | 国产日韩欧美电影 | 视频一区二区三区中文字幕 | 华人黄网站大全 | 男女视频在线观看免费 | 国产成人精品网站 | 免费一区 | 国产精品揄拍一区二区久久国内亚洲精 | 97国产精品 |