情况如下:
我有一个用 C/C++ 编写的非托管库,我想在 CLR 中访问这些函数和结构,但是在为嵌套对象编写基本访问器时遇到了麻烦。以下是这些结构如何在这些库中布局的示例:
struct MyObjectUnmanaged
{
SurfaceUnmanaged s;
...
}
struct SurfaceUnmanaged
{
int numPoints;
double *gridz;
....
}
MyObjectUnmanaged 有多个嵌套的结构,甚至像 SurfaceUnmanaged 这样的结构也会有嵌套的对象。用户还需要能够为这些结构分配内存。
在非托管库中,用户创建 MyObjectUnmanaged 的实例并手动修改每个必要的成员。用户还可以访问任何嵌套对象的成员并设置这些值。最后,指向 MyObjectUnmanaged 实例的指针被传递到一个静态函数中,在该函数中再次对其进行修改。
这是我的 MyObjectUnmanaged 的托管包装器
public ref class MyObjectWrapperManaged
{
private:
MyObjectUnmanaged *o
public:
MyObjectWrapperManaged(){ o = new MyObjectUnmanaged();}
// How should I write the accessors,properties
// or functions to modify objects nested within o?
void SetNumPointsForSurface(int numPts); // accessors like this seem inefficient and
// gratiutous especially if there
// are a lot of members to access and modify
}
我应该为 SurfaceUnmanaged 创建托管包装吗?如果是这样,它们是 MyObjectWrapperManaged 的公共成员,还是属性和访问器只返回假设的 SurfaceManaged 类的新实例?客户端可以访问 SurfaceUnmanaged 以从顶层分配内存的最佳方式是什么?