在Windows服务中,应该如何获得类的实例?
显然,新实例将破坏DI的全部目的。在过去,人们会做
ISomeInterface st = container.Resolve<ISomeInterface>();
在这种情况下,实现ISomeInterface
的类在其构造函数中具有依赖项类/接口,例如SomeInterfaceImp(IOtherInterface oi)()
。
如何使用autofac做到这一点?
这是相当标准的依赖性解析/自动连接的东西。只要您在容器中拥有所有依赖项,解析ISomeInterface
也会自动链接任何依赖项,例如IOtherInterface
。
var builder = new ContainerBuilder();
builder.RegisterType<SomeInterfaceImp>().As<ISomeInterface>();
builder.RegisterType<OtherInterfaceImp>().As<IOtherInterface>();
var container = builder.Build();
Autofac上有一个很好的入门指南,在Autofac doc网站上有很多示例。我建议你从这里开始。
请注意,如果您正在编写长期运行的Windows服务(如标签所建议),则不应从容器中解决问题,因为这可能会导致内存泄漏。也有很多关于此的文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句