亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET2.0服務器控件之類型轉換器

2020-01-18 01:53:40
字體:
來源:轉載
供稿:網友

  類型轉換器是實現自定義服務器控件屬性過程中比較重要的內容。本文將對類型轉換器的基本概念和實現方法進行介紹。

  1. 類型轉換器基本概念

  類型轉換器是自定義服務器控件的輔助性功能實現。它主要用于執行從字符串表示形式到指定類型之間的雙向轉換。例如,以文本形式表示屬性值,將用戶輸入的文本轉換為相應數據類型等等,都應用了類型轉換器。

  對于多數基本數據類型(如Int32、Bool、Char、String、枚舉類型等),.net框架已經為它們提供了默認的類型轉換器,這些類型轉換器完成從字符串到相關值的轉換并執行驗證檢查的功能。默認的類型轉換器派生自System.ComponentModel.TypeConverter類,名為TypeConverterNameConverter。例如,當開發人員在*.ASPx文件中設置服務器控件屬性時會發現,某些屬性值為基本類型,即Bool、Char、Enum、Int等,但是,一律被設置為String類型,這就牽扯到一個類型轉換的問題。例如,屬性Height="150px",屬性值"150px"在設置時是String類型,而這里的屬性值應當作為Unit類型,那么所面臨的問題就是必須要求頁面編譯器將字符串"150px"轉換為Unit類型。通常情況下,對于屬性值為基本類型的屬性,頁面編譯器將自動應用相關的類型轉換器完成轉換工作。在剛才的例子中,頁面編譯器將自動調用類型轉換器System.Web.UI.WebControls.UnitConverter完成String類型與Unit類型之間的相互轉換。

  然而,上面的方法只能解決少數比較簡單的類型轉換問題,并且在多數情況下,相關的類型轉換過程都是默認自動完成的。當默認類型轉換器無法滿足需要時,例如,對于復雜屬性的情況,是沒有關聯的默認類型轉換器時,則可以通過實現自定義類型轉換器來實現。

  自定義類型轉換器是本文的重點內容。按照自定義類型轉換器的功能分類,可以將自定義類型轉換器分為3種:

  ? 值翻譯的類型轉換器;

  這種類型轉換器最為常見,它主要完成從字符串到值得轉換,或用于在設計時和運行時進行數據類型之間的雙向翻譯。例如,實現從String類型轉換為表示在二維平面中定義點的、整數X和Y坐標的有序對Point類型,或者從Point類型轉換為String類型。此處的String類型與Ponit類型之間的雙向轉換,則需要實現一個值翻譯的類型轉換器。

  ? 向屬性窗口提供標準值列表的類型轉換器;

  在Visual Studio 2005中包括控件屬性窗口。類型轉換器可以為屬性窗口中控件的類型提供一個值列表。當開發人員單擊值列表時,則可以方便的在下拉列表中設置屬性的值。

  ? 在運行時為屬性初始化生成代碼的類型轉換器;

  .NET Framework 提供了在設計時生成動態屬性初始化代碼(此代碼在運行時初始化屬性)的功能。開發人員可以構建一個產生基于構造函數的初始化代碼的類型轉換器。為了在運行時配置類型屬性,這些類型轉換器可以使用在設計時設置的值來動態生成構造函數代碼。類型轉換器實現邏輯以配置屬性的類型和構造函數的值。

  實現以上3種類型轉換器都要求自定義類型轉換器的類必須繼承自System.ComponentModel.TypeConverter基類,或者TypeConverter類的已有子類。下面簡單介紹一下TypeConverter及其子類的基本情況。

  TypeConverter類主要提供了一種將值的類型轉換為其他類型,以及訪問標準值和子屬性的統一方法。該類包括多個成員方法。對于創建自定義類型轉換器而言,讀者應了解以下幾個常見方法:

 ?。?)CanConvertFrom方法:返回該轉換器是否可以將一種類型的對象轉換為此轉換器的類型。

 ?。?)ConvertFrom方法:將給定值轉換為此轉換器的類型。

  (3)CanConvertTo方法:返回此轉換器是否可將該對象轉換為指定的類型。

 ?。?)ConvertTo方法:將給定值對象轉換為指定的類型。

 ?。?)IsValid方法:返回給定值對象對于此類型是否有效。

 ?。?)GetStandardValuesSupported方法:返回此對象是否支持可以從列表中選取的標準值集。

  (7)GetStandardValues方法:返回此類型轉換器設計用于的數據類型的標準值集合。

  TypeConverter類是實現類型轉換器的基礎。為了支持默認類型轉換功能,ASP.NET 2.0還對TypeConverter類進行了擴展,其內置了多個派生類。例如,CharConverter、DateTimeConverter、ExpandableObjectConverter、EnumConverter等。它們在完成類型轉換的同時,還可以幫助開發人員創建自定義類型轉換器,例如,可創建繼承自ExpandableObjectConverter類的類型轉換器,該基類提供了在可擴展對象與其他各種表示形式之間實現轉換的類型轉換器。這樣就可以簡化(相對于從TypeConverter基類)創建類型轉換器的過程。

  另外,在使用已有類型轉換器過程要注意:無論何時都不要直接訪問類型轉換器。而應通過使用TypeDescriptor調用適當的轉換器。

  當實現類型轉換器之后,可以使用如下方法應用類型轉換器。

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

  以上代碼顯示了類型轉換器的應用方法。其通知MyClass使用名為MyClassConverter的類型轉換器。此示例假定已在其他位置實現了MyClassConverter。在應用過程中需要注意,元數據屬性TypeConverter通常應用于復雜屬性或數據成員,以將其與類型轉換器關聯。如果將TypeConverter應用于類型,則不必將其再次應用于該類型的屬性或數據成員。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品在线影院| 国产在线观看精品| 奇米一区二区三区四区久久| 日韩精品视频在线观看网址| 国产一区二区在线免费视频| 国产精品久久久久久久久久久久久| 97成人在线视频| 精品视频久久久| 97精品国产97久久久久久免费| 国产一区二区三区久久精品| 亚洲一区二区久久久久久久| 亚洲天堂色网站| 亚洲欧美成人网| 亚洲品质视频自拍网| 亚洲国产精品电影在线观看| 国产视频欧美视频| 久久久免费在线观看| 欧美激情在线观看视频| 8x拔播拔播x8国产精品| 欧美午夜影院在线视频| 亚洲第一精品福利| 亚洲色图狂野欧美| 精品一区二区三区四区在线| 亚洲美女av电影| 亚洲白拍色综合图区| 亚洲欧美激情精品一区二区| 成人午夜小视频| 中文字幕自拍vr一区二区三区| 欧美在线观看日本一区| 国产精品久久久久国产a级| 色综合久久悠悠| 久久成人国产精品| 国产日韩精品综合网站| 这里只有视频精品| 97精品国产97久久久久久免费| 亚洲区免费影片| 欧美怡春院一区二区三区| 日韩视频在线免费| 国产精品日日做人人爱| 国产精品丝袜一区二区三区| 亚洲人午夜色婷婷| 亚洲精品一区二区网址| 最近2019免费中文字幕视频三| 亚洲色图第三页| 亚洲第一视频网| 亚洲精品美女久久久久| 97国产精品免费视频| 2019日本中文字幕| xvideos国产精品| 亚洲free性xxxx护士hd| 91精品国产色综合久久不卡98口| 91色视频在线观看| 97国产真实伦对白精彩视频8| 91精品国产电影| 欧美日韩国产精品| 久久久亚洲网站| 久久久在线免费观看| 亚洲国产97在线精品一区| 日韩精品中文字| 亚洲免费av电影| 久久久国产精品亚洲一区| 日韩经典中文字幕| 欧美专区国产专区| 91色p视频在线| 精品亚洲夜色av98在线观看| 国产精品丝袜一区二区三区| 国产精品久久久久久五月尺| 久久久久久久影院| 欧美日韩国产中字| 俺去啦;欧美日韩| 成人黄色影片在线| 亚洲第一精品夜夜躁人人躁| 久久91亚洲精品中文字幕奶水| 中文字幕日韩电影| 国产精品午夜一区二区欲梦| 九九精品在线视频| 亚洲欧美变态国产另类| 亚洲精品91美女久久久久久久| 国产一区二区三区欧美| 国产欧美精品va在线观看| 亚洲日本欧美日韩高观看| 欧美日韩黄色大片| 久久久久久综合网天天| 欧美亚洲一区在线| 亚洲一区二区自拍| 欧美在线激情视频| 精品久久久久久中文字幕| 日韩成人高清在线| 欧美夫妻性生活视频| 久久综合久久88| 国产福利成人在线| 成人福利视频网| 亚洲xxx大片| 97av在线视频| 成人免费网站在线观看| 亚洲天堂成人在线| 日本国产一区二区三区| 日韩欧美aaa| 97精品在线观看| 日韩欧美黄色动漫| 国产精品视频网址| 国产精品欧美一区二区| 97免费在线视频| 一区二区三区视频免费在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 日本不卡高字幕在线2019| 国产综合在线观看视频| 亚洲大尺度美女在线| 91视频8mav| 久久免费观看视频| 国产精品高潮呻吟久久av黑人| 欧美中文字幕精品| 国产视频在线一区二区| 亚洲香蕉在线观看| 午夜精品久久久久久久99热| 午夜精品久久久久久久99热浪潮| 国产精品91在线观看| 九九久久国产精品| 国产精品中文在线| 日本人成精品视频在线| 欧美成人免费全部观看天天性色| 国产午夜精品一区二区三区| 国产成人在线一区| 91美女福利视频高清| 久久久精品视频成人| 国产精品99一区| 日韩欧美国产一区二区| 蜜臀久久99精品久久久久久宅男| 亚洲精品suv精品一区二区| 亚洲二区中文字幕| 成人精品在线视频| 日韩高清欧美高清| 欧美成人黄色小视频| 国产精品美女视频网站| 国产精品久久久久久久久借妻| 欧美巨乳在线观看| 国产成人精品视频在线| 中文字幕日韩欧美在线| 日韩小视频网址| 精品久久久久人成| 91沈先生在线观看| 国产在线视频2019最新视频| 国产一区私人高清影院| 亚洲a区在线视频| 黑人与娇小精品av专区| 国产这里只有精品| 欧美日韩另类视频| 亚洲精品视频网上网址在线观看| 青青草国产精品一区二区| 国产成人精品久久亚洲高清不卡| 一区二区三区国产视频| 亚洲人线精品午夜| 中文字幕成人在线| 国产视频久久久久| 欧美一级视频在线观看| 亚洲成人aaa| 91国产美女在线观看| 国产精品免费小视频| 国产精品中文字幕在线| 日韩成人av在线| 日本中文字幕不卡免费| 欧美性感美女h网站在线观看免费| 最近免费中文字幕视频2019| 搡老女人一区二区三区视频tv|