官方建议是使用内置容器,但有些功能不受支持,如下所示:
属性注入基于名称的注入子容器自定义生存期管理Func<T> 支持因此,您可以使用其他第三方IOC容器,如Autofac,以下是学习使用记录
首先,准备一个接口及其实现类
publicinterfaceITestService
{
stringShowMsg();
}
publicclass testservice:ItestServiCe
{
publicstringShowMsg()
{
返回“test 123”;
}
}
第二,安装Nuget包
注入
Autofac。扩展。依赖注射
第三,在启动中配置容器。配置服务
注意:使用第三方容器,启动。配置服务必须返回IServiceProvider。
第一种方式,使用自动调整模块配置文件,原始代码修改如下:
公共服务提供者配置服务(IServiceCollection服务)
{
服务。AddMvc()。设置兼容性版本(兼容性版本。version _ 2 _ 2);
//添加自动调整
var container builder = new container builder();
集装箱造船厂。RegisterModule<。自动调整模块>();
集装箱造船厂。Populate(服务);
varcontainer = containerBuilder。build();
returnnewAutofacServiceProvider(容器);
}
自动调整模块类别,例如:
公共类自动调整模块:模块
{
protectedoverridevoidLoad(容器生成器)
{
建筑工人。RegisterType<。TestService>。().As<。ITestService>。();
// ...........
}
}
第二条路
启动。配置服务修改如下
公共服务提供商配置服务(IServiceCollection服务)
{
服务。AddMvc()。设置兼容性版本(兼容性版本。version _ 2 _ 2);
//添加自动调整
var container builder = new container builder();
//containerBuilder。RegisterModule<。自动调整模块>();
//自动注册此程序集中的所有接口
//netcore_autofac将程序集命名为空
//InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例
//SingleInstance: singleton模式,每次调用都会使用同一个实例化对象;每次使用同一个对象;
///instanceerdependency:默认模式,每次调用都会重新实例化对象;为每个请求创建一个新对象;
集装箱造船厂。注册程序集类型(程序集。Load( "netcore_autofac ").AsImplementedInterfaces()。InstancePerLifetimeScope();
集装箱造船厂。Populate(服务);
varcontainer = containerBuilder。build();
returnnewAutofacServiceProvider(容器);
}
请参阅官方文件https://docs.Autofac.org/en/latest/integration/aspnet·core.html,了解其他autofac在中的使用。磊科
产地:
https://www . cn blogs . com/丘国超/archive/2019/06/03/10970672 . html
版权声明:本文收集自网友或由网友提供。如有侵权,请告知版主或留言,微信官方账号立即删除。
1.《autofac 用Autofac替换.net core 内置容器》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《autofac 用Autofac替换.net core 内置容器》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1585486.html