後でC++CLIで使用されるC#のインターフェイスを設計しようとしています。
C#インターフェイスを実装するC ++ CLIクラスには、反復可能なプロパティのようなリストが必要です。このクラスは実際にはネイティブのラッパーです(完全な詳細が必要な場合は、ビューポートのリストを持つOgre RenderWindowオブジェクトへのポインターが含まれ、各ビューポートアイテムは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); }
}
}