Ninject를 사용하여 응용 프로그램의 모든 Controller 인스턴스에 동일한 HttpClient 객체를 주입하는 권장 방법은 무엇입니까?Ninject를 HttpClient와 함께 사용하는 방법
현재 Adam Freeman의 MVC 서적에 따라 EntityFramework Database 컨텍스트를 주입하고 있습니다. 그러나 HttpClient는 MVC 응용 프로그램의 모든 컨트롤러에서 다시 사용할 수 있으므로 HttpClient에는 이상적이지 않은 각 컨트롤러 인스턴스에 대해 새로운 dbContext가 만들어집니다.
public class AccountController : Controller
{
MyDBContext dbContext = new MyDBContext();
public AccountController(MyDBContext context)
{
dbContext = context;
}
...
}
그리고 Ninject에 공장은 다음과 같다 :
생성자/// 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();
}
}