2015-09-26 93 views
-1

有沒有在C#中連接到COM對象,並使用COM對象的內容,如在Builder C++:C#與COM對象連接

CreateOleObject("some.someClass"); 

(OLE C#似乎是不支持的,除非OLEDB,但在我看來這不是目前的情況) 我知道我可以添加一個鏈接 - > COM - >尋找一個註冊的COM對象。

但它不適合。

+0

搜索字詞是[COM interop](https://www.bing.com/search?q=c%23+com+interop)。 –

回答

1

通常,如果您需要在C#中使用COM對象,則需要將其添加爲Reference,然後選擇註冊的類型庫。這將生成一個Interop程序集,之後您可以像使用其他C#類一樣使用COM對象。

或者,您也可以手動運行.NET實用工具tlbimp,它具有大致相同的效果,但是可以給您稍微更多的控制權。

如果您確實需要動態創建對象,而無需提前知道類型,則可以使用dynamic關鍵字和Activator類創建一個類型的動態實例。該代碼是這樣:

var comType = Type.GetTypeFromProgID("some.someClass"); 
dynamic obj = Activator.CreateInstance(comType); 

這將推遲obj所有類型的檢查,直到運行時,表現得就像VBA會。