摘要:.NET 2.0 筆記 - 建立 COM+ 元件
在練習寫 COM+ 元件時,順手做了點筆記:
實作步驟
開啟 Visual Studio 2005,New 一個 Class Library 專案。
加入組件參考:System.EnterpriseServices.dll。
加入一個 class,例如:MyClass,並且讓這個類別繼承自 System.EnterpriseServices.ServicedComponent 類別。
using System.Runtime.InteropServices,並且在類別定義前面加上以下兩個 attributes:
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]為組件加入強式名稱。做法是在專案屬性的「Signing」頁籤中勾選「Sign the assembly」核取方塊,並且指定金鑰檔。
建置專案。
MyClass.cs 完整原始碼如下:
using System; using System.Collections.Generic; using System.Text; using System.EnterpriseServices; using System.Runtime.InteropServices; namespace MyComPlusLib { [ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)] public class MyClass : ServicedComponent { public string Hello(string name) { return "Hello, " + name; } } }
注意:
.NET 組件必須是強式名稱組件才能註冊成 COM+ 元件。
如果類別宣告前面沒有加上 [ComVisible(true)],元件將無法註冊到 COM+ 元件服務中。
如果類別宣告前面沒有加上 [ClassInterface(ClassInterfaceType.AutoDual)],在 COM+ 元件服務視窗裡面會看不到類別提供的 methods(用戶端程式仍然能順利呼叫 method)。
註冊成 COM+ 元件
有兩種方式可以將 .NET 組件註冊成 COM+ 元件:動態註冊和手動註冊。建議使用手動註冊的方式。
手動註冊
使用 .NET Framework 提供的命令列工具: regsvcs.exe,例如:
regsvcs.exe MyComPlusLib.dll
這樣會在 COM+ 元件服務中建立一個新的 COM+ 應用程式,名稱就是 MyComPlusLib,此 COM+ 應用程式裡面會有一個元件:MyComPlusLib.MyClass。
另一種手動註冊的方式,是直接在 COM+ 元件服務中建立新的 COM+ 應用程式,然後再用檔案總管把 MyComPlusLib.dll 直接拖曳到這個 COM+ 應用程式的「元件」節點。
動態註冊
直接撰寫一個用戶端程式,在此程式中加入 MyComPlusLib.dll 組件參考,並且像使用一般的類別一樣建立物件並且呼叫方法。在建立物件時,就會自動將元件註冊到 COM+ 元件服務中。
撰寫 COM+ 元件用戶端程式
以下示範如何撰寫一個簡單的 Windows 應用程式,以便測試寫好的 COM+ 元件。
New 一個 Windows Forms 應用程式專案。
加入組件參考:MyComPlusLib.dll。
加入組件參考:System.EnterpriseServices.dll。
加入一個 Button,撰寫 Click 事件。
參考程式碼:
private void button1_Click(object sender, EventArgs e) { MyComPlusLib.MyClass obj = new MyComPlusLib.MyClass(); Text = obj.Hello("Michael"); }