如何使用Autofac容器来解析类型的实例?

时间:2014-12-17 00:09:34

标签: windows-services autofac

在Windows服务中,如何获取类的实例?

显然,新实例会破坏DI的整个目的。在过去,人们会这样做

ISomeInterface st = container.Resolve<ISomeInterface>();

在这种情况下,实现ISomeInterface的类在其构造函数中具有依赖类/接口,例如SomeInterfaceImp(IOtherInterface oi)()

如何使用autofac执行此操作?

1 个答案:

答案 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.