上一篇介紹如何在 .NET 中使用 COM ,這一篇將討論如何公開 .NET 元件給 COM 使用。
建立可供 COM 使用的 .NET 元件
當 COM 要使用 .NET 元件時,其實中間是透過一個稱為 CCW ( COM Callable Wrapper ) 的代理程式來封送處理的。 不過若要設計 .NET 類別庫給 COM 使用,有幾點必須要注意:
1.在專案屬性的建置頁籤中,必須勾選設定「 Register for COM interop 」項目。
2.必須要引入 System.Runtime.InteropServices 命名空間。
3.讓 .NET 類別在 COM 可見。
- 若希望組件的預設值就是 COM 可見,可以針對組件屬性設定。
[assembly: ComVisible(true)]
- 若沒有做上一個步驟,也可以在想要公開的類別或成員上,加 [ComVisible(true)] 屬性。針對不想公開的成員,則可以設成 false 。
using System.Runtime.InteropServices; namespace ClassLibrary_For_COM { [ComVisible(true)] class ComVisiblePerson { [ComVisible(false)] public string FirstName { set; get; } [ComVisible(false)] public string LastName { set; get; } [ComVisible(true)] public string FullName() { return string.Concat(FirstName, " ", LastName); } } }
部署可供 COM 使用的 .NET 元件
雖然建立了 COM 可見的組件,但是 MSDN 列出了幾點方針以確保建立的組件可以正確部署:
- All classes must use a default constructor with no parameters.
- Any type that is to be exposed must be public.
- Any member that is to be exposed must be public.
- Abstract classes will not be able to be consumed.
組件建立之後,可以使用命令工具 TlbExp.exe 匯出型別程式庫,以便取得 .tlb 檔。例如:
TlbExp ClassLibrary_For_COM.dll /out:ClassLibrary_For_COM.tlb
在 COM 中,元件必須註冊後才可以使用,以下2種方法都可以用來註冊.NET 元件。
使用 visual studio 註冊組件
在Visual Studio開發環境中,若專案屬性的建置頁籤中,有勾選「 Register for COM interop 」項目,則建置(build)後,該組件就會自動註冊在該電腦之中。
手動方式註冊組件
使用命令工具 Regasm.exe ,可以手動將 .NET 元件註冊到電腦中。但是必須以系統管理員身份才可執行。例如:
regasm myAssembly.dll
沒有留言:
張貼留言