【问题标题】:Create instance of COM class dynamically in .NET在 .NET 中动态创建 COM 类的实例
【发布时间】:2009-06-27 03:45:08
【问题描述】:

我可以像这样加载在我的机器上注册的 COM DLL:

Type type = Type.GetTypeFromProgID("MYCOMDLL.ClassName");
object boxed = Activator.CreateInstance(type);

然后我可以四处寻找调用方法等。

如何通过未在我的机器上注册的 DLL 文件实现此目的?

类似这样的魔法密码:

Type type = Type.GetTypeFromFile("MyFile.dll", "MYCOMDLL.ClassName");
object boxed = Activator.CreateInstance(type);

这可能吗?

【问题讨论】:

    标签: .net com interop


    【解决方案1】:

    您必须 (a) 首先以传统方式注册 DLL,或者 (b) 使用免注册 COM 清单文件。

    这可能有助于 (b) - http://msdn.microsoft.com/en-us/library/ms973913.aspx

    【讨论】:

      【解决方案2】:

      我发现这个链接可能有你想要的:

      Dynamically calling an unmanaged dll from .NET (C#)

      看起来你可以在它周围包装一个帮助类。

      【讨论】:

      • 这适用于非托管本机 DLL,但如果它是 COM 库则不会。
      • 哎呀,你是对的。我寻找替代方案,找到了一种加载 livrary 并检索所有 COM 对象的方法,但激活本身似乎需要注册 DLL。
      猜你喜欢
      • 2011-02-18
      • 2015-12-17
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多