解读ASP.NET 5 & MVC6系列教程(7):依赖注入(4)

// 需要先删除void类型的ConfigureServices方法 public IServiceProvider ConfigureServices(IServiceCollection services) { var builder = new ContainerBuilder(); // 构造容器构建类 builder.Populate(services); //将现有的Services路由到Autofac的管理集合中 IContainer container = builder.Build(); return container.Resolve<IServiceProvider>(); //返回AutoFac实现的IServiceProvider }

这样,你就可以像以往一样,使用Autofac的方式进行依赖类型的管理了,示例如下:

public class AutofacModule : Module { protected override void Load(ContainerBuilder builder) { builder.Register(c => new Logger()) .As<ILogger>() .InstancePerLifetimeScope(); builder.Register(c => new ValuesService(c.Resolve<ILogger>())) .As<IValuesService>() .InstancePerLifetimeScope(); } }

地址:https://github.com/aspnet/Hosting/blob/dev/src/Microsoft.AspNet.Hosting/Startup/StartupLoader.cs
另外一个关于Autofac集成的案例:

最佳实践

在使用依赖注入的的时候,我们应该遵守如下最佳实践。

做任何事情之前,务必在程序入口点提前注册所有的依赖类型。避免直接使用IServiceProvider接口,相反,在构造函数里显式添加需要依赖的类型即可,让依赖注入引擎自己来解析实例,一旦依赖很难管理的话,就使用抽象工厂。基于接口进行编程,而不是基于实现进行编程。

参考1:
参考2:

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjysfx.html