문제

MVP 패턴을 사용하여 일종의 마스터/세부 UI를 만들려고합니다. 일반적인 용의자가 있습니다.

interface IMainView{}
class MainView: Form, IMainView{}

interface IMainPresenter{}
class MainPresenter{}

// Numerous domain objects

또한 자체 MVP 트라이어드의 견해 인 Usercontrol도 있습니다.

interface ISubView{}
class SubView: UserControl, ISubView{}

interface ISubPresenter{}
class SubPresenter{}

MainPresenter는 하위 프레 센터의 생성 및 인스턴스를 작성하여 하위 뷰 인스턴스를 만듭니다. 내 문제는 견해에 서로에 대한 언급이 포함되어 있지 않거나 서로 존재한다는 것입니다. 그들은 자신의 발표자에 대해서만 알고 있지만 usercontrol 인 한 뷰를 형태 인 다른보기에 첨부하고 싶습니다. 이것이 서로에 대한 각 견해의 무지를 유지하고 유지할 수 있습니까?

이 시점까지 모든 뷰는 각 발표자가 필요한 속성을 시스템 유형으로 노출 시켰으므로 Listbox가 Combobox 또는 Radiogroup으로 변경되면 발표자에게 영향을 미치지 않습니다. 가능하다면 이런 식으로 유지하고 싶지만 다른 선택이 없다면이 패턴을 기꺼이 위반하려고합니다.

이를 수행하는 이유는 MainView가 사용자에게 객체 모음을 제공하기 때문입니다. 각 객체는 여러 가지 다른 클래스 중 하나 일 수 있습니다. 모두 공통 인터페이스를 구현하지만 각 객체를 조작하기위한 UI는 기본 클래스에 따라 다릅니다.

그건 그렇고, 이것은 .net 2.0을 대상으로하는 Winforms 응용 프로그램입니다 (그러나 C# 3.0으로 컴파일되었습니다).

도움이 되었습니까?

해결책

하위 프리 센터가 메인 발표자에게 참조를 전달한 다음이를 시야로 전달한 다음 빈 패널에 할당함으로써 이것을 해결했습니다.

subView
  |
  V
subPresenter
  |
  V
mainPresenter
  |
  V
mainView

그것은 평범한 오래된 객체로 전달되므로 발표자 중 어느 누구도 Winforms 네임 스페이스에 대한 참조를 포함 할 필요가 없습니다. Mainview는 단순히 Usercontrol의 사망자를 가정하고이를 캐스팅합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top