我正在爲Active MQ編寫Windows服務Listner。我正試圖在項目中實現依賴注入。但我不確定在哪裏註冊Container以及它如何解決?使用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構造函數 - 沒有運氣。甚至嘗試把它放在主要功能。但是我總是在事件記錄器中得到低於錯誤的信息。
「Namespace.HttpClient.HttpClientProxyHandler」正在等待以下依賴性: - 服務「Castle.Windsor.IWindsorContainer」這是未註冊。
任何人都可以幫忙嗎?
嘗試使用'IKernel'而不是'IWindsorContainer'。一般來說,你不想將容器/內核傳遞給你的實現... –