日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

用 .NET 3.5 创建 ToJSON() 扩展方法

發布時間:2023/12/2 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用 .NET 3.5 创建 ToJSON() 扩展方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今年早些時候,我通過blog介紹了 C# 和 VB 語言的一項新的擴充特性"擴展方法"。

擴展方法讓開發者可以向已有的 CLR 類型的公共契約中添加新的方法,而不需要子類化或重新編譯原有的類型。通過這種做法,可以使很多有用的應用場景成為可能(包括 LINQ)。同時,擴展方法也可以用來非常方便地向代碼中添加"語法糖"。

過去幾個月,我一直在準備一些很酷的擴展方法的清單,并計劃在有空的時候實現它們(不確定何時...但至少我還能從這些想法中獲得樂趣)。在上述清單中有兩個擴展方法的應用場景,分別是用于為任意 .NET 對象自動生成JSON (JavaScript Object Notation)或 XML 序列化字符串的。

簡單場景:ToJSON() 擴展方法

假設我有一個 Person 類定義如下(注意:我使用了 自動屬性的新特性來實現):

接下來,我就可以初始化一系列 Person 對象的集合,然后只需調用 ToJSON() 擴展方法,就能得到表示該集合內容的 JSON 字符串。如下所示:

這和 .NET 中內建的,Object 類的 ToString() 方法調用方式很相似 —— 只是生成的結果是表示集合內容的 JSON 格式的字符串而已。然后我們就可以在 AJAX 場景的客戶端使用它:

注意:點擊上圖中調試器的放大鏡圖標,可以打開"文本視圖(Text Visualizer)",能更方便的查看 JSON 序列化字符串:

接下來,這個字符串格式在客戶端可以用 JavaScript 來實例化為合適的 JavaScript 對象,用于表示我的集合內容(注: ASP.NET AJAX 有一個內建的 JavaScript 庫支持這些特性)。

實現 ToJSON 擴展方法

實現一個基本的 ToJSON() 擴展方法很簡單。只要使用 System.Web.Script.Serialization 命名空間下的 JavaScriptSerializer 類即可,然后象下面所示的那樣定義兩個擴展方法。其中一個方法用于對目標對象圖(object graph)進行"深"的序列化,而另一個方法則是一個重載的版本,它允許你指定序列化的深度(比如:ToJSON(2) 只序列化 2 個層次的深度)。

注意,上面的 ToJSON() 擴展方法只是針對 "Object" 類型而定義的——這意味著它可以被用于 .NET 中的任何類型(不限于集合)。也就是說,我們不僅能對上述集合調用 .ToJSON() 方法,還可以對單獨的 Person 對象調用 ToJSON() 方法,或者任意其他的 .NET 類型都可以。

要使用上述擴展方法,只需在程序的頂部添加如下命名空間的引用即可:

然后 VS 2008 就可以為任意對象提供針對這些擴展方法的代碼自動完成和編譯時支持功能:

注意:除了 JavaScriptSerializer 類之外,.NET 3.5 還包含一個新的new System.Runtime.Serialization.DataContractJsonSerializer class 類 ,你也可以用它來做 JSON 序列化/反序列化的工作。

小結

希望以上的例子能給你一個使用擴展方法來封裝功能的示例。下次希望我們一起來看一些好的工具庫,用于提供類似有用的擴展方法的功能。

我非常想看到其他關于可復用的擴展方法使用場景的建議(請通過這篇帖子的評論來建議)。然后我們可以琢磨出,如何創建一個好的 CodePlex 項目,來把這些方法捆綁到一個庫中以便利用。

希望這篇帖子對你有用,

轉載于:https://www.cnblogs.com/China-Dragon/archive/2010/05/10/1731682.html

總結

以上是生活随笔為你收集整理的用 .NET 3.5 创建 ToJSON() 扩展方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。