91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET AJAX循環引用的類型怎么用

發布時間:2021-07-15 10:55:06 來源:億速云 閱讀:140 作者:chen 欄目:編程語言

這篇文章主要講解了“ASP.NET AJAX循環引用的類型怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET AJAX循環引用的類型怎么用”吧!

有時候在Web Service中會需要使用到比較復雜的類型,它們的特征往往都是含用循環引用,這樣的對象如果交給ASP.NET AJAX中默認的序列化方式來處理則會拋出異常,大家經常遇到的“DataTable”問題正是由此引起的。關于這一點,ASP.NET AJAX自然提供了解決方法,在這里“官方”的解決方案就是JavaScriptConverter,它可以讓開發人員自定義特定類型的序列化能力。

事實上,需要自定義JavaScriptConverter的類型不止“含有循環引用”的類型,事實上,JavaScriptConverter的目標是“ASP.NET AJAX中無法操作,或者結果不是開發人員所期望那樣”的類型,這里的“操作”包括“序列化”于“反序列化”兩部分。再舉個例子:如果一個類型沒有無參數的構造函數,那么也需要定義JavaScriptConverter,否則ASP.NET AJAX無法對其進行反序列化操作。

那么我們就通過一個簡單的例子來看一下應該如何開發和使用JavaScriptConverter吧。

1、定義存在循環引用的類型

首先我們定義一個Boy類和Girl類以供使用:

public class Boy  {  public string Name;  public Girl GirlFriend;  }  public class Girl  {  public string Name;  public Boy BoyFriend;  }


很顯然,如果我將它們“配成一對”,在序列化輸出時就會拋出異常了。就沖著這點,我們就必須定義一個JavaScriptConverter啊,總不能拆散他倆。


2、定義JavaScriptConverter以及序列化能力

我們下面就該開始定義JavaScriptConverter了,我們姑且將其稱之為BoyConverter。首先需要告訴ASP.NET,我們這個Converter可以支持哪些類型:

public class BoyConverter : JavaScriptConverter  {  public override IEnumerable<Type> SupportedTypes  {  get  {  yield return typeof(Boy);  }  }  ……  }


如果要實現一個比較良好的Serialize方法,就需要處理“有循環引用”和“沒有循環引用”兩種情況。幸運的是,對于Serialize方法來說,這點比較容易:

  1. public override IDictionary<string, object> Serialize(object obj,
    JavaScriptSerializer serializer)  

  2. {  

  3. IDictionary<string, object> result = new Dictionary<string, object>();  

  4. Boy boy = (Boy)obj;  

  5. result["Name"] = boy.Name;  

  6. // 如果有GirlFriend引用  

  7.     if (boy.GirlFriend != null)  

  8. {  

  9. // 摘除循環引用  

  10.         boy.GirlFriend.BoyFriend = null;  

  11. result["GirlFriend"] = boy.GirlFriend;  

  12. // 在客戶端再建立關聯  

  13.         result["__getRealObject"] =  

  14. "function(o) { oo.GirlFriend.BoyFriend = o; return o; }";  

  15. }  

  16. return result;  

感謝各位的閱讀,以上就是“ASP.NET AJAX循環引用的類型怎么用”的內容了,經過本文的學習后,相信大家對ASP.NET AJAX循環引用的類型怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天祝| 新竹县| 无棣县| 湘乡市| 平顶山市| 松阳县| 元氏县| 广河县| 彰武县| 兴义市| 凌源市| 平和县| 洛川县| 武强县| 延寿县| 屏南县| 胶州市| 重庆市| 台湾省| 叶城县| 凯里市| 丹江口市| 呼图壁县| 定边县| 乐业县| 梧州市| 曲阜市| 盐山县| 石泉县| 嘉定区| 阿合奇县| 林州市| 泰来县| 东方市| 镇沅| 周宁县| 蓬安县| 大同市| 丹阳市| 沂南县| 江口县|