1. 類型轉(zhuǎn)換器基本概念
  類型轉(zhuǎn)換器是自定義服務(wù)器控件的輔助性功能實(shí)現(xiàn)。它主要 " /> 在线亚洲欧美,亚洲成人黄色片,美国俄罗斯毛片一区二区

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

ASP.NET2.0服務(wù)器控件之類型轉(zhuǎn)換器

      類型轉(zhuǎn)換器是實(shí)現(xiàn)自定義服務(wù)器控件屬性過(guò)程中比較重要的內(nèi)容。本文將對(duì)類型轉(zhuǎn)換器的基本概念和實(shí)現(xiàn)方法進(jìn)行介紹。
  1. 類型轉(zhuǎn)換器基本概念
  類型轉(zhuǎn)換器是自定義服務(wù)器控件的輔助性功能實(shí)現(xiàn)。它主要用于執(zhí)行從字符串表示形式到指定類型之間的雙向轉(zhuǎn)換。例如,以文本形式表示屬性值,將用戶輸入的文本轉(zhuǎn)換為相應(yīng)數(shù)據(jù)類型等等,都應(yīng)用了類型轉(zhuǎn)換器。

  對(duì)于多數(shù)基本數(shù)據(jù)類型(如Int32、Bool、Char、String、枚舉類型等),.NET框架已經(jīng)為它們提供了默認(rèn)的類型轉(zhuǎn)換器,這些類型轉(zhuǎn)換器完成從字符串到相關(guān)值的轉(zhuǎn)換并執(zhí)行驗(yàn)證檢查的功能。默認(rèn)的類型轉(zhuǎn)換器派生自System.ComponentModel.TypeConverter類,名為TypeConverterNameConverter。例如,當(dāng)開(kāi)發(fā)人員在*.ASPx文件中設(shè)置服務(wù)器控件屬性時(shí)會(huì)發(fā)現(xiàn),某些屬性值為基本類型,即Bool、Char、Enum、Int等,但是,一律被設(shè)置為String類型,這就牽扯到一個(gè)類型轉(zhuǎn)換的問(wèn)題。例如,屬性Height="150px",屬性值"150px"在設(shè)置時(shí)是String類型,而這里的屬性值應(yīng)當(dāng)作為Unit類型,那么所面臨的問(wèn)題就是必須要求頁(yè)面編譯器將字符串"150px"轉(zhuǎn)換為Unit類型。通常情況下,對(duì)于屬性值為基本類型的屬性,頁(yè)面編譯器將自動(dòng)應(yīng)用相關(guān)的類型轉(zhuǎn)換器完成轉(zhuǎn)換工作。在剛才的例子中,頁(yè)面編譯器將自動(dòng)調(diào)用類型轉(zhuǎn)換器System.Web.UI.WebControls.UnitConverter完成String類型與Unit類型之間的相互轉(zhuǎn)換。
  然而,上面的方法只能解決少數(shù)比較簡(jiǎn)單的類型轉(zhuǎn)換問(wèn)題,并且在多數(shù)情況下,相關(guān)的類型轉(zhuǎn)換過(guò)程都是默認(rèn)自動(dòng)完成的。當(dāng)默認(rèn)類型轉(zhuǎn)換器無(wú)法滿足需要時(shí),例如,對(duì)于復(fù)雜屬性的情況,是沒(méi)有關(guān)聯(lián)的默認(rèn)類型轉(zhuǎn)換器時(shí),則可以通過(guò)實(shí)現(xiàn)自定義類型轉(zhuǎn)換器來(lái)實(shí)現(xiàn)。
  自定義類型轉(zhuǎn)換器是本文的重點(diǎn)內(nèi)容。按照自定義類型轉(zhuǎn)換器的功能分類,可以將自定義類型轉(zhuǎn)換器分為3種:
  · 值翻譯的類型轉(zhuǎn)換器;
  這種類型轉(zhuǎn)換器最為常見(jiàn),它主要完成從字符串到值得轉(zhuǎn)換,或用于在設(shè)計(jì)時(shí)和運(yùn)行時(shí)進(jìn)行數(shù)據(jù)類型之間的雙向翻譯。例如,實(shí)現(xiàn)從String類型轉(zhuǎn)換為表示在二維平面中定義點(diǎn)的、整數(shù)X和Y坐標(biāo)的有序?qū)oint類型,或者從Point類型轉(zhuǎn)換為String類型。此處的String類型與Ponit類型之間的雙向轉(zhuǎn)換,則需要實(shí)現(xiàn)一個(gè)值翻譯的類型轉(zhuǎn)換器。
  · 向?qū)傩源翱谔峁?biāo)準(zhǔn)值列表的類型轉(zhuǎn)換器;
  在Visual Studio 2005中包括控件屬性窗口。類型轉(zhuǎn)換器可以為屬性窗口中控件的類型提供一個(gè)值列表。當(dāng)開(kāi)發(fā)人員單擊值列表時(shí),則可以方便的在下拉列表中設(shè)置屬性的值。
  · 在運(yùn)行時(shí)為屬性初始化生成代碼的類型轉(zhuǎn)換器;
  .NET Framework 提供了在設(shè)計(jì)時(shí)生成動(dòng)態(tài)屬性初始化代碼(此代碼在運(yùn)行時(shí)初始化屬性)的功能。開(kāi)發(fā)人員可以構(gòu)建一個(gè)產(chǎn)生基于構(gòu)造函數(shù)的初始化代碼的類型轉(zhuǎn)換器。為了在運(yùn)行時(shí)配置類型屬性,這些類型轉(zhuǎn)換器可以使用在設(shè)計(jì)時(shí)設(shè)置的值來(lái)動(dòng)態(tài)生成構(gòu)造函數(shù)代碼。類型轉(zhuǎn)換器實(shí)現(xiàn)邏輯以配置屬性的類型和構(gòu)造函數(shù)的值。
  實(shí)現(xiàn)以上3種類型轉(zhuǎn)換器都要求自定義類型轉(zhuǎn)換器的類必須繼承自System.ComponentModel.TypeConverter基類,或者TypeConverter類的已有子類。下面簡(jiǎn)單介紹一下TypeConverter及其子類的基本情況。
  TypeConverter類主要提供了一種將值的類型轉(zhuǎn)換為其他類型,以及訪問(wèn)標(biāo)準(zhǔn)值和子屬性的統(tǒng)一方法。該類包括多個(gè)成員方法。對(duì)于創(chuàng)建自定義類型轉(zhuǎn)換器而言,讀者應(yīng)了解以下幾個(gè)常見(jiàn)方法:
      (1)CanConvertFrom方法:返回該轉(zhuǎn)換器是否可以將一種類型的對(duì)象轉(zhuǎn)換為此轉(zhuǎn)換器的類型。
  (2)ConvertFrom方法:將給定值轉(zhuǎn)換為此轉(zhuǎn)換器的類型。
  (3)CanConvertTo方法:返回此轉(zhuǎn)換器是否可將該對(duì)象轉(zhuǎn)換為指定的類型。
  (4)ConvertTo方法:將給定值對(duì)象轉(zhuǎn)換為指定的類型。
  (5)IsValid方法:返回給定值對(duì)象對(duì)于此類型是否有效。
  (6)GetStandardValuesSupported方法:返回此對(duì)象是否支持可以從列表中選取的標(biāo)準(zhǔn)值集。
  (7)GetStandardValues方法:返回此類型轉(zhuǎn)換器設(shè)計(jì)用于的數(shù)據(jù)類型的標(biāo)準(zhǔn)值集合。
  TypeConverter類是實(shí)現(xiàn)類型轉(zhuǎn)換器的基礎(chǔ)。為了支持默認(rèn)類型轉(zhuǎn)換功能,ASP.NET 2.0還對(duì)TypeConverter類進(jìn)行了擴(kuò)展,其內(nèi)置了多個(gè)派生類。例如,CharConverter、DateTimeConverter、ExpandableObjectConverter、EnumConverter等。它們?cè)谕瓿深愋娃D(zhuǎn)換的同時(shí),還可以幫助開(kāi)發(fā)人員創(chuàng)建自定義類型轉(zhuǎn)換器,例如,可創(chuàng)建繼承自ExpandableObjectConverter類的類型轉(zhuǎn)換器,該基類提供了在可擴(kuò)展對(duì)象與其他各種表示形式之間實(shí)現(xiàn)轉(zhuǎn)換的類型轉(zhuǎn)換器。這樣就可以簡(jiǎn)化(相對(duì)于從TypeConverter基類)創(chuàng)建類型轉(zhuǎn)換器的過(guò)程。
  另外,在使用已有類型轉(zhuǎn)換器過(guò)程要注意:無(wú)論何時(shí)都不要直接訪問(wèn)類型轉(zhuǎn)換器。而應(yīng)通過(guò)使用TypeDescriptor調(diào)用適當(dāng)?shù)霓D(zhuǎn)換器。
  當(dāng)實(shí)現(xiàn)類型轉(zhuǎn)換器之后,可以使用如下方法應(yīng)用類型轉(zhuǎn)換器。

[TypeConverter(typeof(MyClassConverter))]public class MyClass { // Insert code here.} 

NET技術(shù)ASP.NET2.0服務(wù)器控件之類型轉(zhuǎn)換器,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91九色视频无限观看免费 | 国产www在线观看 | 91原创国产 | 久久亚洲精品中文字幕亚瑟 | 18女人腿打开无遮掩免费 | china精品对白普通话 | 在线观看国产精美视频 | 欧美一区二区三区视视频 | 亚洲福利秒拍一区二区 | 国语自产免费精品视频一区二区 | 日本一区二区三区久久 | 亚洲一区二区三区香蕉 | 中文字幕日韩女同互慰视频 | 中文婷婷 | 日本亚洲精品色婷婷在线影院 | 色视频一区二区三区 | 蜜月aⅴ免费一区二区三区 免播放器在线观看 | 99国产精品一区二区 | 色综合久久88中文字幕 | 中文字幕无限乱码不卡2021 | 深爱婷婷网 | 久久66热re国产毛片基地 | 伊人天伊人天天网综合视频 | 亚洲福利在线看 | 日本高清不卡二区 | 久久亚洲视频 | 伊人久久成人成综合网222 | 国产成人精品亚洲日本在线 | 亚洲国产精品婷婷久久久久 | 91在线免费看 | 午夜视频久久 | 视频区小说区图片区激情 | 久久亚洲不卡一区二区 | 激情文学首页 | 久久伊人精品青青草原高清 | 亚洲一区精品视频在线 | 91久久精品国产一区二区 | 久久国产精品系列 | 黄色网址在线播放 | 99精品视频一区在线视频免费观看 | 岛国欧美 |