MVC4に移植したいMVC3アプリケーションがあります。依存性注入にNinjectを使用しています。Nugetを使用して、プロジェクトに「Ninject」を追加し、次のようにコントローラーファクトリを作成しました。
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()
{
//Add ninject bindings here
}
}
これはMVC3では正常に機能しますが、MVC4では状況が変わりました。私はいくつか掘り下げて、MVC4でninjectを機能させる方法を説明するこのリンクを見つけました
http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx
ただし、上記のリンクのコードをコンパイルするのに問題があります。具体的には、web.commonファイルのStart()メソッドに配置することになっているコードで、未解決の名前空間エラーが発生します
GlobalConfiguration.Configuration.ServiceResolver
.SetResolver(DependencyResolver.Current.ToServiceResolver());
「ServiceResolver」と「.SetResolver」はどちらも未解決です。これらを有効にするには、どのような参照を追加する必要がありますか?また、可能であれば、nugetパッケージninject.mvc3をインストールせずにMVC4でninjectを機能させる方法を示すチュートリアルを教えていただけますか?これらのnugetパッケージが更新された場合に問題が発生しないようにするために、MVC3用に作成されたパッケージをアプリケーションにインストールしたくないのでお願いします。
編集:VisualStudio2012と.Net4.5を使用していることを追加する必要があります