溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET怎么定義JavaScript Converter

發(fā)布時(shí)間:2022-05-06 16:10:20 來(lái)源:億速云 閱讀:127 作者:iii 欄目:大數(shù)據(jù)

這篇“ASP.NET怎么定義JavaScript Converter”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“ASP.NET怎么定義JavaScript Converter”文章吧。

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

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

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

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

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

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

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

如果要實(shí)現(xiàn)一個(gè)比較良好的Serialize方法,就需要處理“有循環(huán)引用”和“沒(méi)有循環(huán)引用”兩種情況。幸運(yùn)的是,對(duì)于Serialize方法來(lái)說(shuō),這點(diǎn)比較容易:

public override IDictionary, object, object =  Dictionary, object = (Boy)obj;  result["Name"] = boy.Name;  // 如果有GirlFriend引用      if (boy.GirlFriend != null)  {  // 摘除循環(huán)引用           = ;  result["GirlFriend"] = boy.GirlFriend;  // 在客戶端再建立關(guān)聯(lián)          result["__getRealObject"] =  "function(o) {  = o; return o; }";  }  return result;  }

在這里,我們“手動(dòng)”地將Boy對(duì)象轉(zhuǎn)換為了一個(gè)IDictionary<string, objct>,這樣就避免出現(xiàn)了循環(huán)引用。另外,為了在客戶端直接得到一個(gè)互相引用的“Boy”和“Girl”對(duì)象

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

那么我們來(lái)看一下使用示例吧,首先我們需要定義一個(gè)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;  }  }

以上就是關(guān)于“ASP.NET怎么定義JavaScript Converter”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI