.netcore 自带依赖注入

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了.netcore 自带依赖注入脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

 

.net core主要提供了三种依赖注入的方式

AddTransient瞬时模式:每次请求,都获取一个新的实例。即使同一个请求获取多次也会是不同的实例

AddScoPEd:每次请求,都获取一个新的实例。同一个请求获取多次会得到相同的实例

AddSingleton单例模式:每次都获取同一个实例

 

权重:

AddSingleton→AddTransient→AddScoped

AddSingleton的生命周期:

项目启动-项目关闭 相当于静态类 只会有一个

AddScoped的生命周期:

请求开始-请求结束 在这次请求中获取的对象都是同一个

AddTransient的生命周期:

请求获取-(GC回收-主动释放) 每一次获取的对象都不是同一个 

 

问题:如果我们需要注入的对象很多怎么办?(通过反射来解决)

新建扩展方法Coreextensions,然后在Startup中configureServices方法中加上 services.AddReposITory();。

.netcore 自带依赖注入

 

 

.netcore 自带依赖注入

 

 

注入接口

1 services.AddScoped(typeof(IUserService), typeof(UserService));
2 services.AddScoped<IUserService, UserService>();

无接口,自己注入自己

 services.AddScoped<UserService>(); services.AddScoped(typeof(UserService)); 

注入,构造函数传参

1 services.AddScoped<IUserService, UserSerivce>(x => {return new UserSerivce("");});
2 services.AddScoped<IUserService>(x => {return new UserSerivce("");});
3 services.AddScoped(typeof(IUserService), x => {return new UserSerivce("");});

注入,构造函数传参,需要依赖另一服务

1 services.Add<IUserService, UserService>(x => {return new UserService(x.GetServce<SomeService>());});

动态注入多个接口实现

1 VAR asSEMbly = Assembly.GetExecutingAssembly().definedTypes.Where(a => a.Name.EndsWith("Service") && !a.Name.StartWith("I"));
2 foreach(var assm in assembly)
3 {
4     services.AddTransient(assm.GetInterfaces.FirstOrDefault(), assm);
5 }

调用的时候:IEnumerable<IUserService>

脚本宝典总结

以上是脚本宝典为你收集整理的.netcore 自带依赖注入全部内容,希望文章能够帮你解决.netcore 自带依赖注入所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。