我正在编写 Active MQ 的 Windows 服务监听器。我尝试在项目中实现依赖注入,但不确定应该在哪里注册容器以及如何解决它?
我尝试将其放在 OnStart 方法中,但没有成功。
我尝试将其放在 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
。一般情况下,您不希望将容器/内核传递给实现... - Patrick Quirk