J'essaie de créer une sorte d'interface utilisateur maître/détail en utilisant un modèle MVP. Je les suspects habituels:Comment attacher un UserControl à un formulaire dans un modèle MVP?
interface IMainView{}
class MainView: Form, IMainView{}
interface IMainPresenter{}
class MainPresenter{}
// Numerous domain objects
J'ai aussi un UserControl qui est également une vue de sa propre triade MVP:
interface ISubView{}
class SubView: UserControl, ISubView{}
interface ISubPresenter{}
class SubPresenter{}
Le MainPresenter crée et instance de la SubPresenter, qui à son tour, crée une instance de SubView. Mon problème est que les vues ne contiennent pas de références les unes aux autres ou même se connaissent. Ils ne connaissent que leurs propres présentateurs, mais je veux attacher une vue qui est un UserControl à une autre vue qui est un formulaire. Est-ce possible de faire et de maintenir l'ignorance de chaque vue les uns des autres? Jusqu'à présent, tous les affichages exposaient les propriétés requises par chaque présentateur en tant que types de système, de sorte que les présentateurs ne seraient pas affectés si un ListBox était converti en ComboBox ou en RadioGroup. J'aimerais que ça continue si possible, mais je suis prêt à rompre ce schéma si je n'ai pas d'autre choix.
Mes raisons pour ce faire sont les MainView présente l'utilisateur avec une collection d'objets. Chaque objet peut être l'un des plusieurs (plus de 50) différentes classes. Tous implémenteront une interface commune mais l'interface utilisateur pour manipuler chaque objet variera avec la classe sous-jacente.
Par ailleurs, ceci est une application Winforms ciblage .NET 2.0 (il est compilé en C# 3.0 si)
Il est interdit aux présentateurs de créer des vues !!! Vous avez cassé la règle principa de MVP! – dzendras
J'ai examiné d'innombrables exemples et variations de modèle/vue/. La seule règle cohérente que j'ai rencontrée est de maintenir un certain niveau de séparation entre la vue et le modèle/domaine. Si quelque chose de conseil sur l'ordre de création, la durée de vie et la propriété des acteurs clés de la triade a été évité par ceux qui ont publié leurs recherches. –