我们正在使用一个现有的本地应用程序(很可能是用 VB 编写的),它加载程序集并使用“后期绑定”调用方法。我们无权访问其源代码。
我们想在 C# 中实现这个接口,并让本机应用程序调用我们的 C# 程序集。
这是可能的吗?
除了匹配方法名称和方法签名以使其工作之外,这是我们必须做的吗?
我们正在使用一个现有的本地应用程序(很可能是用 VB 编写的),它加载程序集并使用“后期绑定”调用方法。我们无权访问其源代码。
我们想在 C# 中实现这个接口,并让本机应用程序调用我们的 C# 程序集。
这是可能的吗?
除了匹配方法名称和方法签名以使其工作之外,这是我们必须做的吗?
如果您尝试从 VB6 调用 .NET 代码,最简洁的方法是使 C# 代码显示为 VB6 代码的 COM 对象 - 所以是的,您需要将 C# 代码标记为ComVisible
并确保它看起来像现有的 COM 接口。
更新: 这是一篇帮助您入门的文章。
这些是使其工作所需的步骤:
[ComVisible(true)]
,并确保给它一个独特的[Guid]
属性ProgId
将您与通常的班级相匹配MyNamespace.MyClass
,但您也可以在班级上添加一个属性来覆盖它[DispId]
为每个将被调用的方法设置适当的属性regasm.exe
在您的程序集上运行瞧!本机代码可以通过“后期绑定”调用您的 C#。当然,我必须设置几个注册表项以使我的本机应用程序知道如何加载我的程序集,但一切正常。