在Windows服务中,如何获取类的实例?
显然,新实例会破坏DI的整个目的。在过去,人们会这样做 ISomeInterface st = container.Resolve<ISomeInterface>();
在这种情况下,实现ISomeInterface
的类在其构造函数中具有依赖类/接口,例如SomeInterfaceImp(IOtherInterface oi)()
。
如何使用autofac执行此操作?
答案 0 :(得分:5)
这是非常标准的依赖关系解析/自动连线的东西。只要您拥有容器中的所有依赖项,解析ISomeInterface
将自动链接到IOtherInterface
之类的任何依赖项。
var builder = new ContainerBuilder();
builder.RegisterType<SomeInterfaceImp>().As<ISomeInterface>();
builder.RegisterType<OtherInterfaceImp>().As<IOtherInterface>();
var container = builder.Build();
There is a good getting started guide on Autofac with lots of examples on the Autofac doc site.我建议你从那里开始。
请注意,如果您正在编写长时间运行的Windows服务(如标记所示),则不应解决容器外的问题,因为最终可能会出现内存泄漏。 There is plenty of documentation about this as well.