anchor.diff:  Console.WriteLine(loggers.Count() == 2);//print True
   ----
   
  -A ce stade vous avez les bases pour résoudre les dépendances. Cependant l'utilisation actuelle du Container correspond à peu de chose prêt au pattern ServiceLocator. On aurait très bien pu faire une Factory pour gérer la création d'instance. Il est donc temps de s'intéresser 
  +A ce stade vous avez les bases pour résoudre des dépendances. Cependant l'utilisation actuelle du Container correspond à peu de chose 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 et cycle de vie des instances
  +
  +Pour injecter les dépendances il nous faut une classse plus haut niveau qui repose sur le contrat établit dans ILogger. Pour continuer avec un cas simple prenons l'exemple d'un controlleur qui, lors de l'éxecution d'une action, trace une information via le logger. Si l'ont veut casser l'adhérence il faut passer la dépendance implémentant ILogger via le constructeur :
  +
  +[source,csharp]
  +----
  +public class Controller
  +{
  +	private ILogger _logger;
  +
  +	public Controller(ILogger logger)
  +	{
  +		logger = _logger;
  +	}
  +
  +	public void Action()
  +	{
  +		this._logger.Information("Hello from action !");
  +	}
  +}
  +----
  +
   
   
   == Mise en place dans WebApi
  
positive.code: 
  [source,csharp]
  ----
  var controller = container.GetInstance<IController>();
  Console.WriteLine(controller == null);//print True
  ----
  
  La méthode Add<T> permettant de définir plusieurs implémentation d'un même contrat, il existe une méthode GetAllInstances<T>() qui renvoie l'ensemble des implémentations correspondante. Si on rajoute une nouvelle implémentation de ILogger :
  
negative.code: ----
  public class ConsoleLogger : ILogger
  {
  	public void Information(string message)
  	{
  		Console.WriteLine(message);
  	}
  }
  ----
  
  