元件類別(類別庫範本,Class Library)

我們先參考一下MSDN的元件類別說明:
類別和元件都是可重複使用的程式碼單位。若要撰寫元件,您必須先從類別開始。當類別符合元件互動的標準時,類別就變成為元件。這個標準是透過 IComponent 介面所提供。任何實作 IComponent 介面的類別就是元件。

我們在「VB 物件導向」介紹Class(類別)相關觀念,但這些*.vb/*.cs的Class檔案都會存放於App_Code資料夾之下,在ASP.NET裡還有另一個Bin資料夾,但Bin資料夾裡是存放*.dll檔案。
  • App_Code
    存放Class原始碼,且會自動在執行階段編譯
  • Bin
    存放編譯好的組件(*.dll)
但當App_Code裡的*.vb/*.cs類別檔需要給其他專案使用時,怎麼辦?複製過去嗎?那不就又走上副程式的回頭路,又失去OOP的精神!更好的辦法就是把這些Class編譯成Component,也就DLL檔案,然後只要拿到需要的專案參考一下,馬上可以使用,而且還兼具程式碼保護的功能。

元件類別必須獨立設定在「類別庫」專案中;

新增類別庫專案
一開始是一個空白的Class檔,我們可以加上Namespace,然後修改Class名稱:

Namespace KK
    Public Class Bruce

    End Class
End Namespace

在來我們就可以像一般設計Class的方式來撰寫程式碼,我們來設計一個加法:
Namespace KK
    Public Class Bruce
        Public Function add(ByVal i As Integer, ByVal j As Integer) As String
            Dim total As Integer = i + j
            Return total.ToString()
        End Function

        Public Function add(ByVal i As Double, ByVal j As Double) As String
            Dim total As Double = i + j
            Return total.ToString()
        End Function
    End Class
End Namespace

這個Class有兩個加法,一個處理整數,一個處理浮點數,完成設計後,我們選譯類別庫專案,按下右鍵「建置」。

建置元件
建置完成訊息:
------ 已開始建置: 專案: ClassLibrary1, 組態: Debug Any CPU ------
  ClassLibrary1 -> F:\WebDevelop\Study\StudyTest\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll
========== 組建: 1 成功或最新狀態、0 失敗、0 略過 ==========

這樣我們就編譯好我們的元件檔,我們開一個「新網站」,在專案按右鍵然後「加入參考」;

加入參考
然後查看Bin目錄

Bin的*.dll
開啟一個新網頁:

' 必須先Imports Nanespace
Imports ClassLibrary1.KK

Partial Class Classtext
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' 宣告物件
        Dim a As New Bruce
        ' 使用Integer
        ' return 4
        Response.Write(a.add(1, 3) & "<br/>")
        '使用Double
        ' return 4.4
        Response.Write(a.add(1.1, 3.3) & "<br/>"")
    End Sub
End Class

透過類別專案的設計,我們可以把原先的*.vb/*.cs類別檔編輯為*.dll檔,這樣方便我們發布共用的元件。另外,除了自己手動Coding類別外,我們也可以使用「類別圖表」的方式來設計類別,在類別專案裡新增一個類別圖表:

新增類別圖表
然後從工具箱裡的「類別設計工具」拉出你需要的工具:

設計
圖型化介面可以減少我們的工作量,而且可以清楚看出每個Class之間關係,這是很棒的一件事,但一些客製化的程式,我們還是必須寫程式,可以從上圖有一個「檢視程式碼」(倒算第三個)來進程Class程式介面。

我們透過類別庫專案來幫我們把Class編譯為組件檔(*.dll),所有人都使用同一份DLL檔,而非使用*.vb/*. cs的檔案方式。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。