Quelle serait la manière recommandée d'utiliser Ninject pour injecter le même objet HttpClient dans toutes les instances de contrôleur dans une application?Comment utiliser Ninject avec HttpClient
Actuellement, j'injecte un contexte de base de données EntityFramework suivant le livre MVC d'Adam Freeman comme suit. Cependant, ceci crée un nouveau dbContext pour chaque instance de contrôleur, ce qui n'est probablement pas idéal pour HttpClient, puisque HttpClient est censé être réutilisé sur tous les contrôleurs dans une application MVC.
Constructeur:
public class AccountController : Controller
{
MyDBContext dbContext = new MyDBContext();
public AccountController(MyDBContext context)
{
dbContext = context;
}
...
}
Et l'usine Ninject est la suivante:
/// Class based on Adam Freeman's MVC book to use dependency injection to create controllers
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<MyDBContext>().ToSelf().InTransientScope();
}
}