2015-09-26 127 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会。