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

koo*_*oo9 3 windows-services autofac

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

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

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

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

如何用autofac做到这一点?

Tra*_*lig 5

这是非常标准的依赖性解决方案/自动连接的东西.只要您拥有容器中的所有依赖项,解析ISomeInterface将自动链接到任何依赖项中IOtherInterface.

var builder = new ContainerBuilder();
builder.RegisterType<SomeInterfaceImp>().As<ISomeInterface>();
builder.RegisterType<OtherInterfaceImp>().As<IOtherInterface>();
var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)

Autofac有一个很好的入门指南,在Autofac doc网站上有很多例子.我建议你从那里开始.

请注意,如果您正在编写长时间运行的Windows服务(如标记所示),则不应解决容器外的问题,因为最终可能会导致内存泄漏.有很多关于这方面的文档.