手机版

NET Core 3.0自动交流内置国防情报部替换的新姿势分享

时间:2021-08-19 来源:互联网 编辑:宝哥软件园 浏览:

。网络核心3.0和以往版本不同,替换注入服务的方式有了一定的变化,在尝试着升级项目的时候出现了一些问题。

原来在网络核心2.1时候自动交流返回一个构造函数参数注入到配置服务。净核心服务中,基本大痣是这样做的。

首先我们需要一个重写Autofac .组件的方法,这将用于将我们注册[数据访问层]以及服务[逻辑层]的注册。

公共类自动调整寄存器:自动调整.模块{ //重写注入管道负荷方法,在这里注册注入受保护的覆盖无效加载(ContainerBuilder builder) { //必须是服务结束的建筑商registersassemblytypes(GetassemblyByname(' BlogServiCe ').其中(a=a .名称。以('服务')结尾.asiimplementedinterface();建筑商registersassemblytypes(GetassemblyByname(' Blogrepository ')).其中(甲=甲.名。' EndsWith('存储库'))。asiimplementedinterface();//单一注册//构建器RegisterTypePersonService().名称个人服务(类型(个人服务)。名称);} ///摘要///根据程序集名称获取程序集////summary////param name=' assembly name '程序集名称/param公共静态程序集GetAssemblyByName(字符串程序集名称){返回程序集。加载(程序集名称);} }随后,将。净核心的配置服务方法的返回值改成IServiceProvider,这将用于注入你的服务。

公共IServiceProvider ConfigureServices(IServiceCollection services){ services .AddMvc().SetCompatibilityVersion(兼容性版本.版本_ 2 _ 1);返回博客自动调整模块。解决方案。autofac。提供商。registersautufac。对于registersautufac(服务);}上面的代码中我们调用了对于registersautofac我们自定义的方法,这将我们定义的策略和注入一起替换内置直接投资.

公共静态类registereautofac { public static IServiceProvider for registereautofac(IServiceCollection services){ var builder=new container builder();建筑商。填充(服务);建筑商注册moduleblog。自动调整模块。解决方案。autofac。注册。autofacmoduleregister();定义变量容器=生成器build();返回新的AutofacServiceProvider(容器);} }在应用程序接口层,我们依赖注入服务,这样我们. NET Core2.1基本的注入就实现了。

[路由(' API/[控制器]')][API控制器]公共类值控制器:控制器基础{ private IPersonService _ personService;公共值控制器(IPersonService personService){ _ personService=personService;}//GET API/values[HttpGet]public ActionResultstring GET(){ return Newtonsoft .JSON。jsonconvert。serial object(_ personal service。人());}}就现在我们说一说. NET Core3.0和以往版本的区别。我将所有项目以及依赖项全部改成3.0版本,就现在启动,你会发现意想不到的事情。

啥?你说啥?弄萨累?咋不管用了嘞?

经过看了官方文档,才知道.网络核心3.0引入了具有强类型容器配置的功能。它提供了配置容器方法,您可以在其中使用注入来注册事物,而不必通过ServiceCollection来注册事物所以.好吧!在. NET Core3.0将如何配置。

首先我们需要在Program.cs中修改服务工厂,内置是ServiceProviderFactory的,我们将要指定为:AutofacServiceProviderFactory。

公共静态IHostBuilder CreateHostBuilder(字符串[]参数)=主机.CreateDefaultBuilder(参数).配置网络主机默认值(网络构建器={网络构建器.UseStartupStartup();}) .UseServiceProviderFactory(新的AutofacServiceProviderFactory());现在需要在Startup.cs中添加方法配置容器,并添加以下代码。

public void ConfigureContainer(容器生成器生成器){//添加依赖注入关系建筑商。注册模块(新博客自动调整模块。解决方案。autofac。注册。autofacmoduleregister());var控制器基础类型=类型(控制器基础);//在控制器中使用依赖注入建筑商。注册程序集类型(程序的类型)。装配)。其中(t=controllerBaseType .IsAssignableFrom(t) t!=controllerBaseType).属性auto wired();}然后大功告成,启动再也没问题了~。

开源代码库地址:https://github.com/zaranetCore/Blog .解决方案

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

版权声明:NET Core 3.0自动交流内置国防情报部替换的新姿势分享是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。