1. 類型轉換器基本概念   類型轉換器是自定義服務器控件的輔助性功能實現。它主要用于 " /> 好湿好紧水多AAAAA片秀人网 ,欧美一级久久久久久久久大,亚洲欧洲久久

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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

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

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

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

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

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

  (6)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應用于類型,則不必將其再次應用于該類型的屬性或數據成員。

AspNet技術ASP.NET2.0服務器控件之類型轉換器,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 免费看毛片的网址 | 熟女人妻水多爽中文字幕 | 亚洲欧美日韩国产手机在线 | 亚洲综合中文字幕无线码 | 黑人巨大两根一起挤进欧美 | 国产婷婷综合在线视频中文 | 乌克兰内射私拍 | 麻豆精品传媒卡一卡二传媒短视频 | 最近中文字幕无吗免费高清 | 猪蜜蜜网站在线观看电视剧 | 久在线观看福利视频 | 男生扒开美女尿口戳戳 | 久久天堂网 | 国产精品一区二区四区 | 国产亚洲va在线电影 | 午夜办公室在线观看高清电影 | 黑人寄宿羽月希产后奶水 | 男人和女人一级黄色大片 | 国产精品ⅴ视频免费观看 | 野花日本大全免费高清完整版 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 午夜黄视频 | 久久精品18 | 久久综合久久鬼色 | 男人的天堂黄色 | 97成人在线视频 | 欧美性情一线免费http | 精品人伦一区二区三区潘金莲 | 午夜婷婷一夜七次郎 | 伊人影院2019 | 果冻传媒免费观看 | 日本xxxx69动漫 | 涩涩爱涩涩电影网站 | 日本久久久久久久做爰片日本 | 三级黄色a | 在线 自拍 综合 亚洲 欧美 | 啊叫大点声欠CAO的SAO贷 | 熟妇少妇任你躁在线无码 | 补课H湿 1V1 PLAY | 亚洲精品久久久WWW游戏好玩 | 国产香蕉九九久久精品免费 |