创建托管 C++ 接口以在 C# 中使用

Creating a Managed C++ interface to use in C#

我们有一组用 C++/CLI 包装的本机 C++ 业务规则,然后由 C# 层包装,因此我们可以通过 DCOM 公开它。

本机 C++ 业务规则位于 DLL 中,并且可以在 COM 可见 DLL 中的 C++/CLI 中轻松调用。然后我们将此 DLL 添加为对 C# 项目的引用。

C# 层有很多 类 派生自 ServicedComponent,我们应用 regsvcs 将其注册为 DCOM 服务器。

然而,C++/CLI 层需要与 C# 层进行通信。为此,我正在考虑使用 C# 风格的界面。 C# 层将从接口派生并将其向下传递到 C++/CLI 层,然后 C++/CLI 层可以调用其上的方法以在 C# 层中发生一些事情。为了可见性,需要在 C++/CLI 层中声明此接口。这是我的问题我好像做不到。

有没有办法在 C++/CLI 中声明一个 C# 风格的接口,然后在 C# 中使用它?

有(https://msdn.microsoft.com/en-us/library/737cydt1.aspx):

#pragma managed
using namespace System;

public interface class MyInterface
{
    void MyFunction();
}

并在 C# 中使用:

public class MyClass : MyInterface
{
    public void MyFunction() { }
}