在c ++中扩展C#类

时间:2017-01-19 16:24:43

标签: c# c++ visual-studio inheritance

我有一个主要用C#编写的项目。现在,由于外部库的一些限制,我需要合并一些在单独项目中定义的C ++代码。

是否可以在Visual Studio c ++ \ cli库中创建一个C ++类,它扩展了在单独的DLL库中定义的C#类?

基本上,我需要使用继承在新的C ++类中共享一些抽象C#类中定义的代码。

1 个答案:

答案 0 :(得分:0)

您可以在C ++项目中扩展C#类,实现一个ref class child,在/ clr编译源中定义如下:

  

public ref class CPPRefClass:public CSharpClass

这当然意味着CPPRefClass仍然是.NET类,但您可以使用委托在纯C ++类中使用它。

您甚至可以使用 gcroot 模板将其定义为C ++本机类的成员:

class NativeClass
{
private:
   gcroot<CPPRefClass^> m_CPPRefClass;

}

这是另一个例子: https://msdn.microsoft.com/en-us/library/aeb4be4k