Active MQのWindowsサービスListnerを作成しています。私はプロジェクトにDependency Injectionを実装しようとしています。しかし、私はコンテナをどこに登録するのか、それがどのように解決されるのか分かりません。Windsor Castle IoC for Windowsサービスの使用
下記のようにOnStartメソッドに入れようとしましたが、運がありません。
protected override void OnStart(string[] args)
{
container = new WindsorContainer();
// IWindsorContainer container = new WindsorContainer();
//container.Install(FromAssembly.This());
container.Register(
Component.For<IHttpClientProxyHandler>().ImplementedBy<HttpClientProxyHandlerWeb>().LifestyleTransient(),
Component.For<IHttpClientProxy>().ImplementedBy<HttpClientProxyWeb>().LifestyleTransient(),
//Component.For<IRedisCacheClient>().ImplementedBy<RedisCacheClient>().LifestyleTransient(),
Component.For<IApplicationSettings>().ImplementedBy<ApplicationSettings>().LifeStyle.PerWebRequest,
Component.For<ILogger>().ImplementedBy<Logger>().LifeStyle.PerWebRequest
);
this.messagingQueue = new ActiveMessagingQueue(new ApplicationSettings(), new Logger());
this.logger = new Logger();
this.applicationSettings = new ApplicationSettings();
this.httpClientProxyHandler = container.Resolve<IHttpClientProxyHandler>();
this.messagingQueue.OnMessageReceived += this.OnListenerMessage;
}
次に、私はServiceBaseコンストラクタを入れようとしました。メイン機能に入れてみました。しかし、イベントロガーでは常に下にエラーが表示されます。登録されていなかったサービス「Castle.Windsor.IWindsorContainer」 - :
は「Namespace.HttpClient.HttpClientProxyHandler」は次の依存関係を待っています。
誰でも助けてもらえますか?
'IWindsorContainer'の代わりに' IKernel'を使ってみてください。そして、一般的にコンテナ/カーネルを実装に渡すことは望ましくありません。 –