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 非常相似。
在 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 非常相似。