2017-01-19 2 views
0

У меня есть проект, в основном написанный на C#. Теперь из-за некоторых ограничений внешней библиотеки мне нужно включить некоторый код на C++, определенный в отдельном проекте.Расширение классов C# в C++

Возможно ли создать класс C++ в библиотеке C++ \ cli Visual Studio, которая расширяет класс C#, определенный в отдельной библиотеке DLL?

В принципе, мне нужно поделиться некоторым кодом, определенным в абстрактном классе C#, в новом классе C++ с использованием наследования.

+4

Если C++ класс действительно управляемый .net класс, почему вы думаете, что вы не смогли это сделать? –

+1

Возможный дубликат смешения наследования классов C# и C++] (http://stackoverflow.com/questions/1278893/c-sharp-and-c-class-inheritance-intermingling) – GSerg

+0

вы не можете сделать 'struct Foo: public System :: Object {}; ', о чем вы специально спросили. Существуют различные варианты в зависимости от того, что вы действительно хотите сделать ... –

ответ

0

Вы можете расширить C# класса в C++ проекта реализации класса иого ребенка, определенный в/обнулении скомпилированного источника, как это:

общественных исх класс CPPRefClass: общественный CSharpClass

Это конечно, означает, что CPPRefClass все еще является .NET-классом, но вы можете использовать его в чистом классе C++ с помощью делегирования.

Вы даже можете определить его в качестве члена C++ родной класс, используя gcroot шаблона:

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

} 

Вот еще один пример: https://msdn.microsoft.com/en-us/library/aeb4be4k