2012-06-22 5 views
0

C++에서 나중에 사용되는 인터페이스를 설계하려고합니다. + + CLI.IEnumberable 또는 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); } 
      } 
     } 

답변

2

내가 제대로 질문을 이해한다면, 당신 뷰포트 목록을 노출하려고합니다. 이런 경우, 당신은 할 수 있습니다

  1. 은 기본 뷰포트 객체 (당신이 CLIOgreRenderWindow 위해 그랬던 것처럼 래퍼 심판 클래스를 생성
  2. 을 IRenderWindow는 게터와는 IEnumerable 노출 적이
  3. .. 당신의 C++/CLI 구현에서 관리되는 배열을 만들 수/래퍼 객체 목록 (기본 개체를 기반으로), 그리고 그를 반환합니다. 당신이 따라 다른 일을 할 수있는

항목 # 위의 (3) 귀하 요구 사항 (예 : IEnumerable을 구현하여 한 번에 결과가 나옵니다.

+0

감사합니다. 먼저 간단한 방법을 시도해보고 다재 다능 한 기능이 없는지 확인해 보겠습니다. – teodron

+0

이 접근법은 할 것이고, 나는 그것을 더 권고 할 것이다 .. 대답을 주셔서 감사합니다. – teodron

관련 문제