通过 C# Windows 服务公开 C# COM 接口

发布于 2024-12-09 10:18:08 字数 372 浏览 0 评论 0原文

我希望将旧版应用程序与作为 Windows 服务运行的较新的 C# 组件结合起来。旧版应用程序使用 COM 调用从我们在其他旧版应用程序中拥有的接口检索一些诊断数据。因为我无法大量修改旧应用程序,所以我希望能够从我的新 C# Windows 服务公开相同的 COM 接口,以便可以恢复诊断信息。这有点复杂,因为 Windows 服务需要通过 IoC 加载实现 COM 接口的类,因此它并不真正知道它甚至托管着 COM 接口。

到目前为止,我已经能够在类库中复制 COM 接口,很好地注册它,并从 C++ 测试工具中调用它。但是,当 C# Windows 服务引用该库时,调用的不是实现类的运行实例。有谁知道如何实现这一目标?感觉就像我需要通过在运行时注册实现类来执行类似 C++ 的操作,但我不确定如何执行此操作。

I'm looking to tie up a legacy app with a newer C# component which runs as a Windows service. The legacy app uses COM to call out to retrieve some diagnostics data from an interface we have in other legacy apps. Because I'm unable to heavily modify the legacy app, what I'd like to be able to do is to expose the same COM interface from my new C# Windows service so the diagnostic information can be recovered. It's complicated a bit as the Windows service will need to load the class implementing the COM interface via an IoC so it doesn't really know it's even hosting a COM interface.

So far I've been able to replicate the COM interface in a class library, register it fine, and call it from a C++ test harness. However, when the library is referenced by the C# Windows service, the running instance of the implementing class isn't the one called. Does anyone know of a way to achieve this? It feels like I need to do something like in C++ by registering the implementing class at runtime, but I'm not sure how to do this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文