Я пытаюсь разработать интерфейс на С#, который впоследствии используется в C++ CLI.
Класс командной строки C++, реализующий интерфейс C#, должен иметь свойство, подобное списку, по которому можно выполнить итерацию. Этот класс на самом деле является оболочкой для нативного (если вам нужны все подробности, он содержит указатель на объект Ogre RenderWindow со списком видовых экранов, каждый элемент видового экрана легко доступен через свойство RenderWindow с именем getViewport(int index) ) .
Цель состоит в том, чтобы иметь свойство в интерфейсе И в реализации 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); }
}
}