2

情况如下:

我有一个用 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 以从顶层分配内存的最佳方式是什么?

4

0 回答 0