C# 连接 com 对象

C# connect with com-object

在 C# 中是否有连接到 COM 对象并使用 com 对象的内容,例如在 Builder c++ 中:

CreateOleObject("some.someClass");

(OLE C#好像不支持,OLEDb除外,但我认为不是目前的情况) 我知道我可以添加一个 link -> COM -> 寻找已注册的 com 对象。

但是不合适

通常情况下,如果您需要在 C# 中使用 COM 对象,您会将其添加为引用,并 select 注册的类型库。这将生成一个互操作程序集,之后您可以像使用任何其他 C# 一样使用 COM 对象 class.

或者,您可以手动 运行 .NET 实用程序 tlbimp,其效果大致相同,但您的控制力稍强。

如果您确实需要动态创建对象,而无需事先了解类型,您可以使用 dynamic 关键字和 Activator class 创建一个类型的动态实例。代码如下所示:

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

这会将 obj 上的所有类型检查推迟到 运行 时间,其行为与 VBA 非常相似。