19

WindowsサービスでNinjectを使用する良い例はありますか?必要な拡張機能があるかどうかわかりません。また、コンポジションルートがどうあるべきかわからない?NinjectをWindowsサービスで使用する良い例はありますか?

4

2 に答える 2

19

Windowsサービスは、依存性注入に関して通常のコマンドラインアプリケーションと大差ありません。単純な構成ルートがあなたのMain方法です。

私が通常行っている方法はStandardKernel、依存関係が解決されるモジュールを使用してそこに作成することです。次に、を使用kernel.Getして最上位の依存関係を解決します。他のすべてはそこから続きます。

static void Main(string[] args)
{
    var kernel = new StandardKernel(new FooModule());
    var barDependency = kernel.Get<Bar>();

    System.ServiceProcess.ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] { new FooService(barDependency) };
    System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
于 2012-04-23T21:05:46.200 に答える
1

TopShelfでNinjectを使用する..runvsinstall(start)> MyService.exe run コードで正常に動作 するという奇妙な問題に直面しましたKernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }

しかし、インストール後にサービスを開始すると> MyService.exe install

Ninjectアセンブリスキャンで言及されたバインディングを解決できませんでした。

頭を壊して数時間後...

.From(...).FromAssembliesMatching(...)iに変更すると、サービスを正常に開始できます。

それが誰かを助けることを願っています。

于 2013-03-21T19:42:24.587 に答える