C#和C++类继承混合

Foo*_*tor 5 c# inheritance c++-cli

我有一堆有趣的组件我想要组合在一起:

  1. 通用程序集(C#或C++ - CLI)

    public class MyBase
    {
    public void MethodA()
    { ... }
    private void MethodB()
    { ... }
    protected virtual MethodC()
    { ... }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 测试代码程序集(所有C++ - CLI)

    public class MySpecific : public MyBase{
    protected: override MethodC();
    };
    
    Run Code Online (Sandbox Code Playgroud)
  3. 测试模拟器(C#)

    MySpecific obj = new MySpecific();
    obj.MethodC();
    
    Run Code Online (Sandbox Code Playgroud)

虽然程序集1可以是C++ - CLI来保持简单,但我真的希望将程序集3保存在C#中.这在很大程度上是一个练习,看看是否可以在任何一个方向上完成继承,但我也有一个真实的情况,这个堆栈是有用的.

我发现的第一个问题是C++ - CLI程序集不能编译,因为它不能将MyBase识别为类,即使我有一个对程序集1的引用,看起来像是正确的名称空间.

如何编写语言可移植的类?

Ach*_*him 4

我认为你必须将 MySpecific 声明为托管类,如下所示:

public ref class MySpecific : public MyBase { ... }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅 CLI/C++ 文档。如果不进行修改,您将无法使用旧的 C++ 代码,但我认为您想到的一切都应该是可能的。