我正在尝试在C#中设计一个接口,之后在C ++ CLI中使用。
实现C#接口的C ++ CLI类需要有一个可以迭代的属性列表。这个类实际上是本机的包装器(如果你想要完整的细节,它包含一个指向具有视口列表的Ogre RenderWindow对象的指针,每个Viewport项都可以通过名为getViewport(int index)的RenderWindow属性轻松访问)
目标是在接口和此接口的C ++ CLI实现中拥有一个属性,以便它可以与for each
构造一起使用。最干净的方法是什么?
讨论项目的一些片段:
C#界面:
public interface IRenderWindow
{
bool IsActive { get; set; }
}
和C ++ CLI实施者
public ref class CLIOgreRenderWindow : public IRenderWindow
{
private:
Ogre::RenderWindow * mRenderWindow;
public:
CLIOgreRenderWindow();
virtual property bool IsActive
{
bool get() sealed {return mRenderWindow->isActive();}
void set(bool value) sealed { mRenderWindow->setActive(value); }
}
}
答案 0 :(得分:2)
如果我正确理解您的问题,您希望公开视口列表。如果是这种情况,那么您可以:
上面的第3项是你可以根据你的要求做一些不同的事情(也就是你可以实现IEnumerable一次产生一个结果 - 虽然这样做的工作量更多)。