2010-11-26 23 views
0

Tout d'abord, existe-t-il une référence complète sur Microsoft Unity?ASP.NET et Unity

J'ai remarqué aujourd'hui que lorsque j'appelle "Configure" sur "UnityConfigurationSection", il configure et prépare tous les mappages de configuration. Que se passe-t-il si une classe a une dépendance sur un objet enregistré à l'intérieur de Unity? Cette classe doit elle-même être enregistrée par Unity pour que Unity injecte sa dépendance?

Je crains que Unity n'injecte pas une dépendance sur un objet, si cet objet n'est pas enregistré dans Unity. C'est le cas de la classe "Page" dans ASP.NET.

Merci

Répondre

0

L'unité a un comportement par défaut bien défini lorsque vous travaillez sur les classes qui ne sont pas inscrits à l'avance. En l'absence d'enregistrement, le conteneur recherchera le constructeur le plus long, et recherchera également les attributs du type ([Dependency] étant le principal) pour déterminer les propriétés à injecter. Si vous ne voulez pas utiliser les attributs ou si les valeurs par défaut ne correspondent pas à ce que vous voulez, vous devez configurer le conteneur pour faire ce que vous voulez.

+0

Salut Chris, merci pour votre réponse. J'ai remarqué que, même si une classe n'est pas enregistrée avec Unity, mais qu'elle a des dépendances, la résolution de la classe avec Unity fonctionne bien. Comme pour ASP.NET Web Forms, puisque la classe Page a été créée par ASP.NET runtime et non par unité, c'est pourquoi les dépendances à l'intérieur de la page Web ne peuvent pas être résolues par elles-mêmes. L'astuce consiste à appeler la méthode "BuildUp". Cette méthode est utilisée pour toutes les dépendances d'injection d'Unity après que la classe a été créée (et non créée par Unity). Observe – Bill

+0

@bhaidar, comme une alternative de l'appel de BuildUp dans la classe Page, vous pouvez envisager de mettre en œuvre et enregistrer votre propre httpmodule. Pour plus de détails: http://msdn.microsoft.com/en-us/library/ff664534(PandP.50).aspx – onof

+0

Merci, j'ai vérifié ce site avant et il est logique pour moi maintenant. – Bill