anchor.diff:  
   WARNING: Attention, la méthode GetInstance<T> peut très bien accepter des types implémentés sans que cela ne pose de problèmes. Cependant en faisant ça il y a une rupture avec le principe SOLID d'inversion de dépendance. N'oubliez pas : Il faut dépendre des abstractions, pas des implémentations.
   
  +Si une dépendance n'est pas définit et que l'ont souhaite la résoudre, l'instance de Container léve une Exception de configuration. Il peut y avoir des cas où l'ont ne sait pas si une liaison est établie entre un contrat et une implémentation. Dans ce cas il vaut mieux utiliser la méthode TryGetInstance<T> et tester si l'instance est retournée est null, c'est plus optimisé que de traiter le cas avec un bloc try catch :
  +
  +[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 :
  +
  +[source,csharp]
  +----
  +public class FileLogger : ILogger
  +{
  +    public void Information(string message)
  +    {
  +        File.WriteAllText("log.txt", message);
  +    }
  +}
  +----
  +
  +Et qu'on l'ajoute les deux implémentations dans la configuration :
  +
  +[source,csharp]
  +----
  +configuration.For<ILogger>().Add<ConsoleLogger>();
  +configuration.For<ILogger>().Add<FileLogger>();
  +----
  +
  +L'appel à la méthode renverra une instance de IEnumerable<ILogger> :
  +
  +[source,csharp]
  +----
  +var loggers = container.GetAllInstances<ILogger>();
  +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 
   
   
   == Mise en place dans WebApi
  
positive.code: }
  ----
  
  Le second définit un logger qui va tracer un message d'information. Son implémentation est la suivante :
  
  [source,csharp]
  ----
  public class MyLogger
  {
      public void Information(string message)
      {
  
negative.code: ----
  
  La première classe qui va nous intéresser est Container. C'est l'élément centrale de la librairie. Elle va nous permettre de définir les dépendances à résoudres, leur façon d'être résolut et leur récupération.
  Pour définir une dépendance il nous faut un contract. Pour les besoins de l'article je vais en définir un :
  
  [source,csharp]
  ----
  