anchor.diff:  
   	public Controller(ILogger logger)
   	{
  -		logger = _logger;
  +		_logger = logger;
   	}
   
   	public void Action()
  
positive.code: 
  [source,csharp]
  ----
  var container = new Container(configuration =>
  {
  	configuration.For<ILogger>().Add<Logger>();
  });
  ----
  
  NOTE: Il existe une différenciation très nette entre les deux méthode. Add<T> permet d'ajouter une implémentation alors que Use<T> définit l'implementation comme strictement à utiliser. En conséquence lors que vous utilisez Use<T> c'est toujours la dernière liaison à une implémentation qui l'emporte.
  
  La dépendance est à présent définit. Le code ne contient pas de logique de création des implémentations c'est donc l'instance de la class Container qui va donc les construire pour nous. Il est possible de les récupérer en appelant la méthode GetInstance<T>() :
  
  
negative.code: }
  ----
  
  Après avoir configurer le Container pour lié une des deux implémentations de ILogger, il est possible de récupérer une instance de la classe Controller via la méthode GetInstance<T>() :
  
  
  [source,csharp]
  ----
  var container = new Container(configuration =>
  {
  	configuration.For<ILogger>().Use<ConsoleLogger>();
  });
  
  var controller = container.GetInstance<Controller>();
  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.
  
  == IoC best practices
  
  