1

Ninject v3 を使用して、.NET4 Windows サービス ( System.ServiceProcess.ServiceBase) 内でホストされている Web サービスをテストしようとしています。

を作成しMyServerModule : NinjectModule、その中で、設定Load()に基づいてインターフェイスをランタイム オブジェクトに条件付きでバインドしapp.configます。

の初期化手順は次のとおりです。まず、インスタンスに基づいてServiceBase.OnStart()新しいを作成し、それを Ninject コンテナに関連付けます。次に、サービス クラスに基づいてのインスタンスを作成し、サービス ホストを開いてリッスンを開始します。StandardKernelMyServerModuleNinjectServiceHost

Ninject v2 では、コードは次のとおりです。

IKernel kernel = new StandardKernel(new MyServerModule());
KernelContainer.Kernel = kernel; 
NinjectServiceHost serviceHost = new NinjectServiceHost(typeof(MyService));
serviceHost.Open();

ただし、Ninject v3 ではKernelContainer存在しなくなりました。さらに、NinjectServiceHost()をサブクラス化するサーバー ファクトリを受け入れるようになりましたIServiceBehavior

Ninject v3 で同様の初期化手順を実行するにはどうすればよいですか?

4

1 に答える 1

0

Windows サービス内でいくつかの自己ホスト型 WCF サービスを実行している同様の問題に遭遇しました。kernel.Get<IServiceBehavior>()各 NinjectServiceHost を初期化するときに最初のパラメーターとして使用することになりました。

例は次のようになります。

IKernel kernel = new StandardKernel(new MyServerModule());
NinjectServiceHost serviceHost = new NinjectServiceHost( kernel.Get<IServiceBehavior>(), typeof(MyService));
serviceHost.Open();
于 2012-08-15T16:54:26.707 に答える