2010-10-01 17 views
1

Je regarde l'intro géniale de Mike Tautly à Prism. Tout était sensé, mais j'ai été un peu confus dans la sixième vidéo.Est-ce que l'unité fait juste disparaître sans avoir besoin de rien enregistré?

Il a son constructeur de classe de vue prendre un paramètre du ViewModel. Il dit alors que l'unité remplira ceci pour nous (c'est-à-dire le construira).

Dans le passé, il a dû enregistrer ce genre de chose (ie IMyClass enregistré à MyClass). Mais il ne l'a pas fait pour ViewModel. La seule différence que je peux voir est que la dépendance à ViewModel n'était pas une interface, mais plutôt une classe directe. Est-ce que l'unité voit cela et essaie juste de construire le ViewModel ou est-ce que j'ai manqué un pas? (Et si le ViewModel avait des paramètres, essaierait-il de les faire aussi?)

Répondre

2

Lorsqu'un type peut être instancié (c'est-à-dire, pas une classe de base ni une interface), l'unité peut comprendre comment ce type est créé sans avoir besoin d'enregistrer un mappage de type.

Les mappages sont utiles lorsque le type à injecter n'est pas instanciable par lui-même.

J'espère que cela aide.

Merci, Damian

1

Unity essaie de construire la classe injectant les dépendances résolues dans le plus grand constructeur (avec le nombre maximum de paramètres).

Donc, si vous avez un tel modèle de vue:

public class ViewModel 
{ 
    public ViewModel(IMyDependency dependency) { .. } 
    ... 
} 

vous ne devez vous inscrire IMyDependency.