编写C ++ / CLI嵌套对象访问器的最佳方法

时间:2013-05-21 23:45:07

标签: c# .net c++-cli clr wrapper

情况如下:

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

0 个答案:

没有答案