Ninject est une Inversion de Contrôle conteneur.
Que faut-il faire?
Supposons que vous avez un Car
classe qui dépend de l' Driver
classe.
public class Car
{
public Car(IDriver driver)
{
///
}
}
Afin d'utiliser l' Car
classe que vous le construire comme suit:
IDriver driver = new Driver();
var car = new Car(driver);
Un Cio containter centralise les connaissances sur la façon de créer des classes. C'est un référentiel central qui en sait bien peu de choses. Par exemple, il sait que la classe de béton que vous devez utiliser pour construire une voiture est un Driver
et non pas un autre IDriver
.
Par exemple, si vous développez une application MVC, vous pouvez dire Ninject comment construire vos contrôleurs. Vous le faites en vous inscrivant concrètes qui répond à des interfaces spécifiques. Au moment de l'exécution Ninject va déterminer les classes sont nécessaires pour construire le contrôleur requis, et tous derrière les coulisses.
// Syntax for binding
Bind<IDriver>().To<Driver>();
Ceci est intéressant, car il permet de construire des systèmes qui sont plus facilement unité vérifiable. Supposons qu' Driver
encapsule tous les accès de base de données pour Car
. Dans un test unitaire pour la Voiture, vous pouvez faire ceci:
IDriver driver = new TestDriver(); // a fake driver that does not go to the db
var car = new Car(driver);
Il y a toute les cadres qui prennent soin de créer automatiquement des tests de classe pour vous et ils sont appelés les moqueries des cadres.
Pour plus d'informations: