Ninjectを使用して同じHttpClientオブジェクトをアプリケーションのすべてのControllerインスタンスに注入するにはどうすればよいでしょうか?NinjectをHttpClientで使用する方法
現在、Adam FreemanのMVCブックに続いて、EntityFrameworkデータベースコンテキストを次のように挿入しています。ただし、HttpClientはMVCアプリケーションのすべてのコントローラで再利用されるため、コントローラインスタンスごとに新しいdbContextが作成されますが、これはおそらくHttpClientにとって理想的ではありません。
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();
}
}