anchor.diff:  controller.Action();// print "Hello from action !"
   ----
   
  -Cette première façon de faire est certes éfficace mais imaginez faire cela pour toutes les dépendances... ce n'est pas très élégant. En plus il devient compliquer de résoudre les dépendances sur des instances dépendant qu'on voudrait résoudre avec le container. Il existe donc une méthode plus éfficace pour mettre en place l'injection par propriété : Définir des conventions dans le registre des Policies du Container. Pour cela les développeurs de StructureMap on tout prévu, il existe une méthode SetAllProperties qui attent en paramètre une action exposant une instance de la classe SetterConvention :
  +Cette première façon de faire est certes efficace, mais imaginez faire cela pour toutes les dépendances... ce n'est pas très élégant. De plus, il devient compliquer de résoudre les dépendances sur des instances dépendant qu'on voudrait résoudre avec le container. Il existe donc une méthode plus efficace pour mettre en place l'injection par propriété : Définir des conventions dans le registre des Policies du Container. Pour cela les développeurs de StructureMap ont tout prévu, il existe une méthode SetAllProperties qui attend en paramètre une action exposant une instance de la classe SetterConvention :
   
   [source,csharp]
   ----
  
positive.code: controller.Action();// print "Hello from action !"
  ----
  
  J'en vois déjà qui vont me répondre que j'ai mis un *Warning* plus haut concernant l'appel de GetInstance<T> sans utiliser une interface ! En réalité dans ce cas les choses sont différentes car Controller n'est pas une dépandance mais un dépendent. La résolution est donc conforme au principe d'inversion de dépendance. Cette manière de procéder est une des plus couramment utilisé dans le monde .Net (on l'a retrouve sous la forme de DependencyResolver dans les frameworks Microsoft).
  
  StructureMap offre aussi la possibilité d'injecter les dépendances par inspection des propriétés plutôt que par le constructeur. C'est une alternative intéressante et facile à mettre en oeuvre. Déjà cela permet de réduire le code de la classe Controller à :
  
  
negative.code: Console.WriteLine(loggers.Count() == 2);//print True
  ----
  
  A ce stade vous avez les bases pour résoudre des dépendances. Cependant, l'utilisation actuelle du Container correspond à peu de choses prêt au pattern ServiceLocator. On aurait aussi pu faire une Factory pour gérer la création d'instance. Il est donc temps de s'intéresser à l'injection des dépendances.
  
  == Injection
  
  Pour injecter les dépendances il nous faut une classse de plus haut niveau qui repose sur le contrat établit dans ILogger. Pour continuer avec un cas simple prenons l'exemple d'un contrôleur qui, lors de l'exécution d'une action, trace une information via le Logger. Si l'on veut casser l'adhérence il faut passer la dépendance implémentant ILogger via le constructeur :
  
  [source,csharp]
  ----
  