真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NET中如何定義JavaScriptConverter

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)ASP.NET中如何定義JavaScriptConverter,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供蘄春企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計、H5建站、小程序制作等業(yè)務(wù)。10年已為蘄春眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

1、定義存在循環(huán)引用的類型

首先我們定義一個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 SupportedTypes  {  get  {  yield return typeof(Boy);  }  }  ……  }

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

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

  2. {  

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

  4. Boy boy = (Boy)obj;  

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

  6. // 如果有GirlFriend引用  

  7.     if (boy.GirlFriend != null)  

  8. {  

  9. // 摘除循環(huán)引用  

  10.         boy.GirlFriend.BoyFriend = null;  

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

  12. // 在客戶端再建立關(guān)聯(lián)  

  13.         result["__getRealObject"] =  

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

  15. }  

  16. return result;  

在這里,我們“手動”地將Boy對象轉(zhuǎn)換為了一個IDictionary,這樣就避免出現(xiàn)了循環(huán)引用。另外,為了在客戶端直接得到一個互相引用的“Boy”和“Girl”對象,我在這里使用了我在前一片文章中提到的擴展,具體請見《深入Atlas系列:綜合示例(1) - 調(diào)用服務(wù)器端方法時直接獲得客戶端具體類型》。


3、自定義序列化功能使用示例

那么我們來看一下使用示例吧,首先我們需要定義一個Web Service方法:

[WebService(Namespace = "http://tempuri.org/")]  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  [Microsoft.Web.Script.Services.ScriptService]  public class BoyGirlService  : System.Web.Services.WebService {  [WebMethod]  public Boy GetBoy(string boyName, string girlName)  {  Boy boy = new Boy();  boy.Name = boyName;  if (!String.IsNullOrEmpty(girlName))  {  Girl girl = new Girl();  girl.Name = girlName;  girl.BoyFriend = boy;  boy.GirlFriend = girl;  }  return boy;  }  }

上述就是小編為大家分享的ASP.NET中如何定義JavaScriptConverter了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享題目:ASP.NET中如何定義JavaScriptConverter
文章鏈接:http://weahome.cn/article/gicshe.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部