最近、Ninject と ASP.NET MVC 3 の最善のアプローチが何であるかを理解するのに苦労しています。
私はInstall-Package Ninject.MVC3
自分のアプリケーションで使用しており、次のメソッドを持つブートストラップ クラスを持っています。
public static void Start()
public static void Stop()
private static IKernel CreateKernel()
private static void RegisterServices(IKernel kernel)
それはすべて素晴らしく、期待どおりにモジュールをロードします。しかし、歴史的に私が行ったことは次のようなものです。
MyApp.dll
Kernel.Bind<ISomething>().To<Something>();
Kernel.Bind<IBlah>().To<Blah>();
Kernel.Bind<IFoo>().To<Foo>();
MyApp.Tests.dll
ここでは、 ONLY のバインディングをオーバーライドしたいISomething
ので、以前はモック/何でも必要なものをアンバインドして再バインドしていました。
Kernel.Unbind<ISomething>();
Kernel.Bind<ISomethig>().To<TestSomething>();
しかし、Nuget
パッケージにはApp_Start
、元のライブラリのクラスでこれを達成するための考え抜かれた方法を意味するメソッドはありません。テスト アプリに別の Ninject ブートストラップ クラスを配置すると、新しいカーネルを構築する準備ができているように見えます。
[assembly: WebActivator.PreApplicationStartMethod(typeof(TestNinjectBootstrapper), "Configure")]
カーネルを元のブートストラップに静的に格納し、tests プロジェクトから呼び出すこともできましたが、これは間違っているように感じます。考えすぎて何かが足りない?または、考えが少なすぎます:)
ああ。良いアプローチとは?