将数组从c++/cli传递到';typesafe';方法

本文关键字:方法 typesafe 数组 c++ cli | 更新日期: 2023-09-27 18:19:52

以类型安全的方式将对象列表/向量/数组从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

将数组从c++/cli传递到';typesafe';方法

C++/CLI中的数组是"托管指针"(称为引用),因此它被写为array<Type>^。当维度为1时,您可以通过等于C#new Type[count]gcnew array<Type, dimension>(count)对其进行初始化。

所以在你的情况下,它可能看起来像这样:

array<MyClass^>^ getObjects() { 
    return gcnew array<MyClass^,1>(number) ; 
}