我正在尝试在 C# 中设计一个以后在 C++ CLI 中使用的接口。
实现 C# 接口的 C++ CLI 类需要有一个可以迭代的类似列表的属性。这个类实际上是一个原生的包装器(如果你想要完整的细节,它包含一个指向 Ogre RenderWindow 对象的指针,该对象有一个 Viewports 列表,每个 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); }
}
}