2010-08-16 5 views
2

Quelqu'un at-il une liste de lien (s) sur le www pour une bonne liste de gotchas DI? J'ai essayé d'injecter des contrôles en utilisant DI, dans une application Web asps asp.net et trouvé que sur l'accumulation récursive que ViewState est perdu. Serait également utile une liste d'articles où le développeur doit être conscient de gotchas avant de prendre la grande étape dans la mise en œuvre de l'IoC/DI dans l'application.Injection de dépendances Gotchas

Répondre

3

DI lui-même n'a pas de pièges. Ou plus précisément, ce serait comme énumérer programmation générale gotchas, comme passer une référence NULL et ne pas vérifier pour cela.

Surchauffe récursive jusqu'à ViewState est perdu

« Buildup » comme certains conteneurs mis, est généralement une mauvaise idée et devrait être évitée autant que possible. Jetez un oeil à la Windsor FAQ pour de bonnes raisons contre l'accumulation. Ceci s'applique à tous les conteneurs IoC.

En particulier, dans votre cas, il semble que ce qui se passe est que l'accumulation se produit après LoadViewState() du contrôle (ou LoadPageStateFromPersistenceMedium()) de la page afin qu'il rende le viewstate invalide. Peut-être que votre conteneur IoC fournit une classe de contrôle de base qui prend déjà soin de cela et que vous avez oublié de l'hériter.

IMHO, faire DI dans WebForms est tellement hackish (ce cas par exemple) que je préfère recourir à l'emplacement du service (uniquement pour les pages Web et les contrôles!). Simple, et pas de hacks étranges requis.

Maintenant, IoC + DIpeut ont quelques précautions, par exemple les problèmes du cycle de vie/de portée. Igor Brejc covers this very thoroughly in this article. Vous devez garder cela à l'esprit en particulier dans les applications complexes/grandes avec beaucoup de composants.

+0

J'ai essayé l'injection qui appelle Unity.BuildUp dans Controls Init Eventhandler..La boucle récursive pour les sous-contrôles provoque la perte de l'état de vue. Si l'Injection est explicite en injectant un contrôle particulier alors ça marche bien ... – chugh97

+0

@ chugh97: ben, c'est trop hackish à mon goût. –

+0

différence/relation entre IoC et DI: http://www.betaversion.org/~stefano/linotype/news/38/ –

Questions connexes