VB.NET組件封裝實現功能體驗
VB.NET的應用到底能幫助我們帶來些什么呢?只有在實際應用中才能真正的體會到它強大的功能。下面就先從VB.NET組件封裝來看看它的一些主要作用。從這個角度來仔細的分析一下這款編程語言的優點。#t#
前幾天一直在研究如何將VB.NET組件封裝之后可以實現com供非托管代碼調用。上網查資料,查書,試驗,***測試了vb.net,c#,vc++.net 等多種語言,都沒有搞定。在論壇上發了帖子。雖然有回復,但是只是給了些資料。資料看了又看,反復的研讀。照著例子一步一步地做。但總是有些地方沒有成功。正在絕望中。一個朋友給了我簡單的答案。我在高興的同時也感慨自己的愚鈍和呆笨。
原來在vs.net 2005中實現VB.NET組件封裝是如此的簡單。
方法如下:
新建一個項目,選擇Visual Basic \ Window \ 類庫,假設項目名為ClassLibrary1
然后 在solution manager(解決方案資源管理器)中,將新創建的Class1.vb文件刪除。
然后在solution manager(解決方案資源管理器)中的項目上點擊右鍵,在彈出的菜單上點擊添加 \ 類,在彈出的對話框中選擇com類,修改類的名稱(本例中修改為ComC.vb),后點擊添加按鈕。
則會看到ComC.vb的代碼如下:
- < ComClass(ComC.ClassId,
ComC.InterfaceId, ComC.EventsId)>- _ Public Class ComCClass ComC
- COM GUID#Region "COM GUID"
- ' 這些 GUID 提供此類的 COM 標識
- ' 及其 COM 接口。若更改它們,則現有的
- ' 客戶端將不再能訪問此類。
- Public Const ClassId As String =
"97451265-d75d-4d5a-a39d-6c4b68f8dd99"- Public Const InterfaceId As String =
"5015b9e7-64e6-4750-8c28-5c51d968f1d6"- Public Const EventsId As String =
"1afd03f4-5974-445e-8ca2-a8e9be3432d7"- #End Region
- ' 可創建的 COM 類必須具有一個不帶參數的
- Public Sub New()
- ' 否則, 將不會在
- ' COM 注冊表中注冊此類,且無法通過
- ' CreateObject 創建此類。
- Public Sub New()Sub New()
- MyBase.New()
- End Sub
- End Class
現在只要在這個類中添加public 的成員即可,假如我們添加一個方法Northsnow
- < ComClass(ComC.ClassId,
ComC.InterfaceId, ComC.EventsId)>- _ Public Class ComCClass ComC
- COM GUID#Region "COM GUID"
- ' 這些 GUID 提供此類的 COM 標識
- ' 及其 COM 接口。若更改它們,則現有的
- ' 客戶端將不再能訪問此類。
- Public Const ClassId As String =
"97451265-d75d-4d5a-a39d-6c4b68f8dd99"- Public Const InterfaceId As String =
"5015b9e7-64e6-4750-8c28-5c51d968f1d6"- Public Const EventsId As String =
"1afd03f4-5974-445e-8ca2-a8e9be3432d7"- #End Region
- ' 可創建的 COM 類必須具有一個不帶參數的
- Public Sub New()
- ' 否則, 將不會在
- ' COM 注冊表中注冊此類,且無法通過
- ' CreateObject 創建此類。
- Public Sub New()Sub New()
- MyBase.New()
- End Sub
- Public Sub Northsnow()Sub
Northsnow(ByVal ss As String) MsgBox(ss)- End Sub
- End Class
然后就可以編譯,編譯后,在pb中添加如下的代碼來調用這個com
- int intValue
- oleobject objOle
- objOle=create OLEObject
- intValue=objOle.
connecttonewobject
("ClassLibrary1.ComC")- objOLe.Northsnow
("I am Northsnow")
運行這個VB.NET組件封裝的實現程序就會看到效果。
我在C#中沒有看到類似的com類.
現在這個棘手的難題解決了之后,工作可以繼續了。心理挺高興的。但是在高興之余又有一種奇怪的感覺。
VB.NET的確的很強。把很多復雜的東西都包裝起來幫我們實現。我們在享受輕松的解決難題的時候,距離底層技術卻越來越遠。不知道是喜是悲。