我们正在使用现有的本机应用程序(最有可能用VB编写),该应用程序加载了带有“较晚绑定”的组件和调用方法。我们无法访问其源代码。

我们希望在 C# 中实现此接口,并让本机应用程序调用我们的 C# 程序集。

这有可能吗?

除了匹配方法名称和方法签名才能使其正常工作之外,我们还需要做些什么吗?

有帮助吗?

解决方案 2

以下是使其发挥作用所需的步骤:

  1. 标记您的类 [ComVisible(true)],并确保为其赋予唯一的 [Guid] 属性
  2. 将您的 ProgId 与您的类(通常为 MyNamespace.MyClass)相匹配,但您也可以在类上添加一个属性来覆盖它
  3. 为每个要调用的方法添加正确的 [DispId] 属性
  4. 编译程序集并在程序集上运行 regasm.exe

瞧!本机代码可以通过“后期绑定”调用您的 C#。当然,我必须设置几个注册表项才能使我的本机应用程序知道如何加载我的程序集,但一切都正常。

其他提示

如果你想从VB6调用.NET代码最彻底的方法是使C#代码显示为一个COM对象VB6的代码 - 所以是的,你需要标记您的C#代码ComVisible保证它看起来像现有的COM接口。

<强>更新 这里的物品到让你开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top