2012-02-21 5 views
2

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

public class ClassA 
    { 
     int Id { get; set; } 
     ClassB[] ClassBItems { get; set; }  
    } 

и

public class ClassB 
    { 
     int SomeOtherId {get;set;} 
    } 

Я хочу передать эту модель объекта в неуправляемый C++. То есть Получите вызов от неуправляемого кода на C++, такого как «GetClassA(): ClassA».

До сих пор мне удалось передать отдельные объекты или массивы объектов из управляемого C# в неуправляемый C++ (с использованием COM/CCW), но не прошли Pass ClassA с ClassB внутри него.

Мои вопросы:

  1. Как я могу передать обратно ClassA который массив ClassB внутри него?
  2. До сих пор я мог только передать структуры с C#. Мои приведенные выше примеры - это классы, которые я действительно хотел бы передать. То есть ссылку на данные.

Чтобы уточнить, неуправляемый код будет вызывать управляемый код.

ответ

0

Вы не можете сделать это напрямую. Вы не можете вызывать методы C# из C++ и наоборот. Если вы что-то передаете, это всегда просто C struct, без методов.

Но есть несколько способов, чтобы обойти, что:

  1. Использование C++/CLI.
  2. Сделайте COM-объекты вне классов C#.

Если вы не хотите этого делать, вы можете попробовать сделать это, передав обратные вызовы неуправляемому коду или что-то в этом роде. Но я думаю, что это было бы довольно сложно и беспорядочно.

+0

Я знаю, что вы действительно не можете вызвать методы C#, но вы можете позвонить в .net-код, используя COM, который является тем же самым понятием. Я рад сделать объекты COM из своих классов C#, но могу ли я сохранить ту же структуру, что и в моем первоначальном сообщении? Благодарю. – ahallan

 Смежные вопросы

  • Нет связанных вопросов^_^