您的位置 首页 > 德语词汇

automacro的?Autofac一个优秀的.NET IoC框架

大家好,如果您还对automacro的不太了解,没有关系,今天就由本站为大家分享automacro的的知识,包括Autofac一个优秀的.NET IoC框架的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

1、在阅读本文章之前,你可以先阅读:

automacro的?Autofac一个优秀的.NET IoC框架

2、Autofac与C#语言的结合非常紧密,并学习它非常的简单,也是.NET领域最为流行的IoC框架之一。

3、首先,将Autofac的NuGet软件包安装到您的应用程序中。

4、Autofac\n

然后,我们通过创建ContainerBuilder来注册组件。

5、varbuilder=newContainerBuilder();\nbuilder.RegisterType<Knife>();\nbuilder.RegisterType<Actor>();\n

接着,可以通过在一个已存在的生命周期上调用BeginLifetimeScope()方法来创建另一个生命周期作用域,以根容器作为起始。生命周期作用域是可释放的并且追踪组件的释放,因此确保你总是调用了"Dispose()""或者把它们包裹在"using"语句内。

6、using(varscope=container.BeginLifetimeScope())\n{\n}\n

最后,在注册完组件并暴露相应的服务后,你可以从创建的容器或其子生命周期中解析服务.让我们使用Resolve()方法来实现:

7、using(varscope=container.BeginLifetimeScope())\n{\nvaractor=scope.Resolve<Actor>();\nactor.Kill();\n}\n

让我们来看看完整代码:

8、usingSystem;\n\nnamespaceAutofac.ConsoleApp\n{\nclassProgram\n{\nstaticvoidMain(string[]args)\n{\nvarbuilder=newContainerBuilder();\nbuilder.RegisterType<Knife>();\nbuilder.RegisterType<Actor>();\n\nvarcontainer=builder.Build();\nusing(varscope=container.BeginLifetimeScope())\n{\nvaractor=scope.Resolve<Actor>();\nactor.Kill();\n}\n\nConsole.ReadKey();\n}\n}\n}\n

让我们来看看输出结果:

9、小明用刀杀怪\n4在Asp.NetCore中使用

首先,将Autofac,Autofac.Extensions.DependencyInjection的NuGet软件包安装到您的应用程序中。

10、dotnetaddpackageAutofac\ndotnetaddpackageAutofac.Extensions.DependencyInjection\n

然后,在Program.Main中增加.UseServiceProviderFactory(newAutofacServiceProviderFactory())

11、publicstaticIHostBuilderCreateHostBuilder(string[]args)=>\nHost.CreateDefaultBuilder(args)\n.ConfigureWebHostDefaults(webBuilder=>\n{\nwebBuilder.UseStartup<Startup>();\n})\n.UseServiceProviderFactory(newAutofacServiceProviderFactory());\n

接着,在Startup.ConfigureServices中增加services.AddControllersWithViews();

12、publicvoidConfigureServices(IServiceCollectionservices)\n{\nservices.AddControllers();\nservices.AddSwaggerGen(c=>\n{\nc.SwaggerDoc("v1",newOpenApiInfo{Title="Autofac.WebApi",Version="v1"});\n});\n\nservices.AddControllersWithViews();\n}\n

接着,在Startup.ConfigureContainer方法中,将Knife,Actor注册到Autofac中ContainerBuilder。

13、publicvoidConfigureContainer(ContainerBuilderbuilder)\n{\nbuilder.RegisterType<Knife>();\nbuilder.RegisterType<Actor>();\n}\n

最后,增加HomeController,执行actor.Kill。

14、usingMicrosoft.AspNetCore.Mvc;\nusingSystem;\n\nnamespaceAutofac.WebApi.Controllers\n{\n[Route("[controller]")]\n[ApiController]\npublicclassHomeController:Controller\n{\n\nprivatereadonlyActoractor;\npublicHomeController(Actoractor)\n{\nthis.actor=actor??thrownewArgumentNullException(nameof(actor));\n}\n\n[HttpGet]\npublicstringGet()\n{\nreturnactor.Kill();\n}\n}\n}\n

启动调试,让我们来看看输出结果:

好了,文章到这里就结束啦,如果本次分享的automacro的和Autofac一个优秀的.NET IoC框架问题对您有所帮助,还望关注下本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023