天天看點

.NET快速開發實踐中的IExtenderProvider擴充元件

          說起擴充程式設計元件,我們不得不起到一個接口IExtenderProvider,參考msdn的定義:定義将屬性擴充到容器中的其他元件的接口;下面我貼上IExtenderProvider的定義:

          根據定義我們可以了解為,實作了IExtenderProvider接口的某個控件或者元件有擴充其他元件的能力,IExtenderProvider接口借助VisualStudio設計器的功能,使我們可以動态的為控件增加屬性,并可以在設計時通過屬性視窗修改這些屬性,而不需要繼承控件類。這樣做的最大好處是可以借助Visual Studio的能力,并保持控件原有的設計時支援。

          IExtenderProvider接口元件提供了一種與容器中其他元件的粘合能力,這無疑是為我們提供了另一種元件的擴充思想,我了解為侵入程式設計,假設沒有這個方式,我們擴充一個元件需求繼承原有的元件并且增加一個或多個擴充屬性,比如我們要達到這麼一個目的,界面上指定的方本模框必須輸入字元才能離開輸入焦點,如果我們用傳統方法,需求重寫TextBox控件,代碼如下:

          我們來在UI上拖一個TextBoxEx控件,可以通過設定屬性AllowEmpty來控件是否允許輸入空值:

.NET快速開發實踐中的IExtenderProvider擴充元件

          以下這種方式可以了解為.NET的原生實作方式,需求繼續原來控件,并且在應用過程上需要調用UI的控件,比較麻煩,下面我們來用IExtenderProvider做一個實作:

          我們來在UI上拖一個幾個TextBox控件,再拖一個TextBoxAllowInput 元件,我們可以通過設定TextBox的在TextBoxAllowInput 上的擴充屬性AllowEmpty來控件是否允許輸入空值:

.NET快速開發實踐中的IExtenderProvider擴充元件

          上例簡單的介紹了一下IExtenderProvider接口及其背後的程式設計思想,在開發過程中,我們可以應用這種侵入式程式設計接口實作很多的擴充元件如資料綁定、輸入驗證、焦點跳轉、輸入法切換等多種多樣的快捷程式設計輔助元件。

          下面我将會介紹基于IExtenderProvider擴充技術的UI控件與實體的資料綁定元件。

QQ群:15118502

<a href="http://www.cnblogs.com/eastjade/archive/2010/04/19/1715662.html">AgileEAS.NET之靈活并行開發方法</a>

<a href="http://www.agilelab.cn/">靈活軟體工程實驗室</a>

繼續閱讀