.NET中IoC框架Autofac用法讲解
1 前置阅读
在阅读本文章之前,你可以先阅读:
2 简介
Autofac与C#语言的结合非常紧密,并学习它非常的简单,也是.NET领域最为流行的IoC框架之一。
3 使用
首先,将Autofac的NuGet软件包安装到您的应用程序中。
Autofac
然后,我们通过创建ContainerBuilder来注册组件。
var builder = new ContainerBuilder(); builder.RegisterType<Knife>(); builder.RegisterType<Actor>();
接着,可以通过在一个已存在的生命周期上调用 BeginLifetimeScope() 方法来创建另一个生命周期作用域, 以根容器作为起始。生命周期作用域是可释放的并且追踪组件的释放, 因此确保你总是调用了 "Dispose()"" 或者把它们包裹在 "using" 语句内。
using (var scope = container.BeginLifetimeScope()) { }
最后,在注册完组件并暴露相应的服务后, 你可以从创建的容器或其子生命周期中解析服务. 让我们使用 Resolve() 方法来实现:
using (var scope = container.BeginLifetimeScope()) { var actor = scope.Resolve<Actor>(); actor.Kill(); }
让我们来看看完整代码:
using System; namespace Autofac.ConsoleApp { class Program { static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterType<Knife>(); builder.RegisterType<Actor>(); var container = builder.Build(); using (var scope = container.BeginLifetimeScope()) { var actor = scope.Resolve<Actor>(); actor.Kill(); } Console.ReadKey(); } } }
让我们来看看输出结果:
小明用刀杀怪
4 在 Asp.Net Core 中使用
首先,将Autofac,Autofac.Extensions.DependencyInjection的NuGet软件包安装到您的应用程序中。
dotnet add package Autofac dotnet add package Autofac.Extensions.DependencyInjection
然后,在Program.Main中增加.UseServiceProviderFactory(new AutofacServiceProviderFactory())
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseServiceProviderFactory(new AutofacServiceProviderFactory());
接着,在Startup.ConfigureServices中增加services.AddControllersWithViews();
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Autofac.WebApi", Version = "v1" }); }); services.AddControllersWithViews(); }
接着,在Startup.ConfigureContainer方法中,将Knife,Actor注册到Autofac中ContainerBuilder。
public void ConfigureContainer(ContainerBuilder builder) { builder.RegisterType<Knife>(); builder.RegisterType<Actor>(); }
最后,增加HomeController,执行actor.Kill。
using Microsoft.AspNetCore.Mvc; using System; namespace Autofac.WebApi.Controllers { [Route("[controller]")] [ApiController] public class HomeController : Controller { private readonly Actor actor; public HomeController(Actor actor) { this.actor = actor ?? throw new ArgumentNullException(nameof(actor)); } [HttpGet] public string Get() { return actor.Kill(); } } }
启动调试,让我们来看看输出结果:
小明用刀杀怪
到此这篇关于.NET中IoC框架Autofac用法讲解的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署
这篇文章主要介绍了ASP.NET 5 项目发布与部署的设置和流程,并介绍IIS和web.cmd模式两种发布模式的区别,需要的朋友可以参考一下。2016-06-06为Visual Studio手工安装微软ReportViewer控件
这篇文章介绍了为Visual Studio手工安装微软ReportViewer控件的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06在ASP.NET 2.0中操作数据之五十:为GridView控件添加Checkbox
本文主要介绍ASP.NET 2.0中为GridView控件添加Checkbox复选框控件的方法,并实现全选功能。2016-05-05ASP.NET中URL Routing和IIS上URL Rewriting的区别
这篇文章主要介绍了ASP.NET中URL Routing和IIS上URL Rewriting的区别,需要的朋友可以参考下。2016-06-06《解剖PetShop》之三:PetShop数据访问层之消息处理
本文主要讲解PetShop4.0的数据访问层的消息处理部分,需要的朋友可以参考下。2016-05-05在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页
DataList 和Repeater 都没有提供内置的分页和排序功能,本文主要介绍利用PagedDataSource实现DataList和Repeater数据分页。2016-05-05解读ASP.NET 5 & MVC6系列教程(10):Controller与Action
这篇文章主要介绍了ASP.NET 5 Controller与Action的定义和使用,需要的朋友可以参考下2016-06-06
最新评论