WCF COM 与复杂类型的互操作

WCF COM Interop With Complex Types

我想使用 COM Interop 创建一个 WCF 服务,我需要用它来传递复杂的数据。最好是一组自定义 class 对象。我不确定如何实现这一点,并且缺乏像样的例子。

我在 Whosebug 上只发现了一个类似的问题

Calling C# From Unmanaged C++ Passing Or Returning "Complex" Types

但是,解决方案是只使用 C++/CLI dll,但这对我来说不是一个选择。将调用它的 C++ 应用程序静态链接 C++ 运行时,我被告知不得更改。

I want to create a WCF service with COM Interop

好的,但是您希望呼叫的方向是什么?对于 COM -> .Net,您需要创建一个 COM Callable Wrapper. For .Net -> COM you need to create a Runtime Callable Wrapper

听起来您正试图从 COM 调用 .Net,但这又引出了一个问题,您为什么要尝试通过互操作调用 WCF 服务?如果要调用服务,则使用服务端点并调用它们。

我不清楚方法。 我不太确定,但桌面应用程序也遇到了同样的问题, 如果你想使用 COM 组件,最好在 COM 周围有一个包装器 (RCW),你可以在其中引用 PIAs(Primary interop Assemblies)

然后从您的主项目(WCF 服务)引用此包装器项目,而不是直接引用 COM。