一般ASP.NET專案的共用函式會寫在 [App_Code] 資料夾之下,不過這種方式寫成的共用函式只能同一個專案中使用,若是其他專案也要使用相同的共用函式就需要把 [App_Code] 的檔案複製過去使用。
如果要撰寫跨專案使用的共用函式庫,最好的方式就是撰寫函式庫組件(Assembly),以功能將函式分類為不同的類別,將這些類別置於同一個組件中成為一個獨立檔案(*.dll),不同的專案需要使用這些函式庫組件時,只要將這個組件參考進來即可。以下就逐步說明如果建立函式庫組件及如何使用它。
一般ASP.NET專案的共用函式會寫在 [App_Code] 資料夾之下,不過這種方式寫成的共用函式只能同一個專案中使用,若是其他專案也要使用相同的共用函式就需要把 [App_Code] 的檔案複製過去使用。
如果要撰寫跨專案使用的共用函式庫,最好的方式就是撰寫函式庫組件(Assembly),以功能將函式分類為不同的類別,將這些類別置於同一個組件中成為一個獨立檔案(*.dll),不同的專案需要使用這些函式庫組件時,只要將這個組件參考進來即可。以下就逐步說明如果建立函式庫組件及如何使用它。
建立「類別庫」專案
新增一個專案,在範本中選擇「類別庫」項目,輸入專案名稱及位置,按下「確定」鈕,操作如圖1所示。
圖 1 新增專案
執行功能表「專案\MyLib屬性」設定專案屬性,如圖 2所示,一般都會把組件名稱與根命名空間設為相同,根命名空間即為此專案內所有類別的預設命名空間。
另外按下「組件資訊」,可以輸入這個組件的相關資訊,如圖 3所示,建議至少要輸入標題、描述、組件版本、檔案版本這四項以識別組件。
圖 2 設定專案屬性
圖 3 組件資訊
建立函式類別
再來要加入共用函式的類別,建立將共用函式依功能分類置於不同的類別中,例如基本、檔案、資料庫…等,有效的將函式分類,未來在使用上會比較便利。
執行功能表「專案\加入類別」,如圖 4所示,在名稱欄位中輸入BaseFunc,此即為類別名稱。按下「加入」鈕後,即會在專案中加入一個類別。
圖 4 加入類別
假設在BaseFunc類別中加入StrSameText及StrIsEmpty這二個共用函式,其中BaseFunc類別加入NotInheritable關鍵字,將此類別標記為不可繼承。在此類別中的共用函式需加入Shared關鍵字,標記此函式為共用函式,即類別不用New即可直接使用。
另外注意在類別及函式加上的註解格式,未來在開發環境使用這些共用函式時,這些註解都會變成撰寫程式碼的即時說明,讓程式開發者在使用上更方便。
程式碼 1 BaseFunc類別
''' 基本共用函式。
''' </summary>
Public NotInheritable Class BaseFunc
''' <summary>
''' 判斷兩字串是否相同,不區分大小寫。
''' </summary>
''' <param name="S1">比較的字串一。</param>
''' <param name="S2">比較的字串二。</param>
Public Shared Function StrSameText(ByVal S1 As String, ByVal S2 As String) As Boolean
Return S1.Equals(S2, StringComparison.CurrentCultureIgnoreCase)
End Function
''' <summary>
''' 判斷字串是否為空字串。
''' </summary>
''' <param name="S">要判斷的字串。</param>
Public Shared Function StrIsEmpty(ByVal S As String) As Boolean
If S Is Nothing Then Return True '若S 為Nothing 也視為空字串
Return S = String.Empty
End Function
End Class
在目前的方案中,加入一個測試專案,來驗證函式庫中的函式是否正確。測試專案可以視情況選擇「網站」或「Windows應用程式」的專案來做測試的動作。在此我們以建立「新網站」的方式來做為測試專案,執行功能表「檔案\加入\新網站」建立一個測試的網站專案,如圖 5所示。
圖 5 加入新網站做為測試專案
在測試專案中加入參考,在專案頁籤中選擇MyLib專案,如圖 6所示。如此就可以在測試專案中使用函式庫組件中的共用函式。
在測試專案的程式碼中,先引用MyLib命名空間 (Imports MyLib),然後就可以使用MyLib命名空間中所有的類別。在程式碼中輸入BaseFunc類別後,就會帶出該類別所有的共用函式,而且原先的函式及參數註解也會出現在程式碼提示中,如圖 7及圖 8所示。
圖 6 加入參考
圖 7 函式提示說明
圖 8 函式參數提示說明
若測試完成後,請將專案的編譯組態設為Release,如圖 9所示。建置MyLib專案後,在原始檔的資料夾下會有 [bin\Release] 子資料夾下,會產生MyLib.dll及MyLib.xml這二個檔案,其中MyLib.dll就是組件檔案,MyLib.xml是該組件XML文件檔案,也就是在程式碼中加入的註解,撰寫程式碼時提示說明也是由此檔案來載入。
圖 9 設定編繹組態
一般專案若需使用到函式庫組件,只需要MyLib.dll及MyLib.xml這二個檔案,在專案中參考MyLib.dll這個檔案,即可使用函式庫組件。雖然這個函式庫組件是由VB.NET來撰寫的,可是無論是VB.NET或C#或其他語言的.NET專案都可以使用該函式庫組件。