2010-04-15 11 views
2

Je construis une application winforms utilisant MVP à vue passive et Castle Windsor comme conteneur IoC. Je suis encore un peu nouveau à l'injection de dépendance et MVP, donc je cherche une certaine clarté ...Winforms MVP avec Castle Windsor - DI pour les sous-formulaires?

J'ai un formulaire principal qui contient un certain nombre de contrôles de l'utilisateur, et fera également apparaître d'autres dialogues (ex Connexion, options, etc.) au besoin. Ma première question est ... est-ce que je devrais employer l'injection de constructeur pour obtenir les présentateurs pour ces autres vues dans la vue principale, ou devrais-je revenir à un modèle de type de localisateur de service? (On m'a dit que c'est un gros nono!) Ou quelque chose d'autre?

deuxième question ... les contrôles utilisateur doivent communiquer de nouveau à la forme principale quand ils sont « terminés » (définition de cet état varie en fonction du contrôle). Existe-t-il un moyen standard de les relier? Je pensais peut-être juste de relier les événements entre le présentateur principal et les présentateurs d'enfants, mais je ne suis pas sûr que ce soit une bonne idée.

Je vous remercie de toute aide, il semble que la combinaison de MVP et dans WinForms est IoC pas exactement bien documenté.

Répondre

2

Permettez-moi de commencer par dire que je n'ai pas écrit WinForms dans un certain temps, donc je ne peux pas être tout à fait exact.

Si vous utilisez votre point de vue vue passif devrait avoir aucune dépendance, donc vous ne devriez pas avoir besoin d'injecter quoi que ce soit en eux. Le présentateur doit être instancié par le conteneur et avoir IView injecté via .ctor. Généralement, évitez le Localisateur de Service - this post décrit quelques alternatives puissantes.

Pour la communication de retour, j'utiliser une sorte de pont-interface, qui serait injectée dans le présentateur. Je suis vague ici, car les détails dépendent des spécificités de votre scénario, et comment exactement vous décidez de partitionner votre logique.

Généralement, ne vous concentrez pas trop sur le conteneur IoC - c'est juste un outil qui fera une (grande) partie du travail pour vous, mais ce n'est pas une baguette magique - vous devriez être capable de faire la même chose sans conteneur en place, donc si cela vous distrait, n'hésitez pas à le retirer de l'image lors du prototypage.

+0

Merci Krzysztof - je l'ai fait rendu compte que les présentateurs doivent être communiquer dans les deux sens entre l'autre, donc je vais utiliser le modèle de médiateur entre eux. Article très intéressant sur les alternatives de Service Locator, je vais essayer de les implémenter aussi! –

+1

Le lien semble être brisé, est-ce [http://kozmic.pl/2010/02/15/new-castle-windsor-feature-ndash-typed-arguments/) l'article correct? – R0MANARMY

Questions connexes