まず、依存性注入は比較的新しいものです。私はUnity.MVC3を使って最初のプロジェクトを行いましたが、今は.Netプロジェクトのための最も普及している依存インジェクタと思われるので、新しいプロジェクトでNinjectに切り替えることにしたいと思います。だから私は、私のプロジェクトでNinject v2.2.1.4をNinject.MVC3 v2.2.2.0と共に使用しようとしています。私の以前のプロジェクトでNinjectとHierarchicalLifetimeManagerを持つASP.Net MVC 3プロジェクト?
私はユニティを使用していた、私は私のブートストラップクラスに次のコードのようなものを持っていた:今
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<ITestService, TestService>();
container.RegisterType<IDatabaseFactory, DatabaseFactory>(new HierarchicalLifetimeManager());
container.RegisterType<IUnitOfWork, UnitOfWork>();
container.RegisterType<ILoggingService, LoggingService>();
container.RegisterControllers();
return container;
}
、私は私の新しいプロジェクトは、私は次のコードのようなものでこれを置き換えますNinjectMVC3クラス(App_Start):
はしかし、私はそれが正常にHierarchicalLifetimeManagerの使用を必要とするので、私は、DatabaseFactoryが結合して何をすべきか分かりません。誰も私にDatabaseFactoryのバインディングを適切に作成する方法を教えてもらえますか?
コードサンプルと説明をありがとう!真実を伝えるために、私はまだASP.Net MVCとこれらすべてのパターンについて多くのことを学ばなければなりません。私はNugetの最新パッケージを使用していますので、バージョンは問題ありません。 BindModule.Loadオーバーライドの使用と、Ninject.MVC3によって提供されるNinjectMVC3クラスで提供されるRegisterServices()メソッドの使用の違いはありますか?ところで、MVC3用のNinject.Web.MVCパッケージはありません。 –
また、HierarchicalLifetimeManagerとは何かを完全に理解していません。私はMVCについて学ぶために見たサンプルプロジェクトからそれを取り出しました。あなたはNinjectを使うときに何を置き換えるべきか教えてください。 –
私はそれほど大きな違いはないと思います。モジュール化されていて、多くのプロジェクトを持っているなら、彼ら自身のNinjectModule AFAIKを持つことができますが、2番目の質問に答えるためにはわかりませんが、あなたはSingleton、InRequestScope、InThreadScopeのような上記の例を見ることができます。 –