2008-12-10 81 views

回答

6

這樣做可能非常簡單。但是有很多地方並不那麼簡單。它很大程度上取決於你的班級需要做什麼以及你打算如何部署它。

一些問題需要考慮:

  • 你的類必須有一個參數的構造函數。
  • 它不能暴露靜態方法。
  • 是否將您的COM DLL部署到全局程序集緩存好?如果沒有,你將不得不給它一個強大的名字,並使用regasm /codebase註冊。
  • 你關心什麼GUID標識類和它的接口?如果不是,你可以讓regasm分配它們,但每次(和每個地方)課程都會被註冊。如果您需要GUID在整個安裝過程中保持不變,則需要使用Guid屬性標記成員。
  • 你打算在.NET和COM之間使用數據類型的默認封送處理嗎?如果不是,則需要使用MarshalAs屬性標記屬性和方法。
  • 對你來說什麼樣的COM接口你的類暴露是否重要?如果是這樣,你將需要處理InterfaceType屬性。
  • 您的課程是否需要提高或迴應事件?如果是這樣,那麼對你如何設計你的類接口有影響。

這裏有一篇關於COM互操作和.Net here的非常好的(如果過期的)文章。 (文章中談到的很多事情,比如生成類型庫,現在都會自動爲您處理。)Microsoft's documentation是最新的,但不是非常詳細。

5

您應該使用regasm實用程序來註冊程序集(就像使用COM服務器做regsvr32一樣)。然後你可以從COM中使用它。確保它已安裝在GAC中。這些東西應該有從COM可用的[ComVisible(true)]

1

您可以選擇每個項目的「COM Accessible」選項。那麼,當然,你必須註冊程序集才能使用它,但就是這樣。


我不得不去打獵了一下,找到它的C#(我已經習慣了VB.Net),但你可以找到通過雙擊在Solution Explorer中的文件夾Properties選項,選擇Application選項卡,然後單擊Assembly Information...按鈕。