передать массив из c ++ / cli в C # «безопасным» способом - PullRequest
0 голосов
/ 10 января 2012

Какой самый простой способ вернуть список / вектор / массив объектов из c ++ / cli в c # безопасным способом?

//C++/CLI project 1
public ref class MyClass
{
}

public ref class Factory
{
    array<MyClass^> getObjects() {...}
}

//C# project 2
Factory f = new Factory();
System.Array a = f.getObjects(); // not typesafe! I'd like to get an array/list/vector of MyClass elements

Я попытался вернуть

List<MyClass^> 

из C ++ и прочитайте

IList<MyClass^> 

из C #, он не компилируется ...

спасибо, Chris

1 Ответ

1 голос
/ 26 января 2017

Массив в C ++ / CLI - это «управляемый указатель» (называемый ссылкой), поэтому он записывается как array<Type>^. Вы можете инициализировать его через gcnew array<Type, dimension>(count), что равно C # new Type[count], когда размерность равна 1.

Так что в вашем случае это может выглядеть так:

array<MyClass^>^ getObjects() { 
    return gcnew array<MyClass^,1>(number) ; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...