.NetCore自带的依赖注入使用
程序员文章站
2024-01-29 18:04:10
...
.NetCore中的依赖注入有:
1.服务注入
2.ORM注入(例如EFCore注入)
一、服务注入:将实现类注入到其实现的接口中
有三种注入方式:
1.AddTransient:每一次使用都实例化一次,相当于new
2.AddScoped:每一次请求一个实例
3.AddSingleton:单例
使用时,使用构造函数注入
个人扩展:通过反射去获取程序所有需要注入的类并且自动注入
代码如下:
/// <summary>
/// 写一个自动识别注入容器
/// </summary>
/// <param name="services"></param>
private void AutoRegister(IServiceCollection services)
{
//小知识点:获取所有的程序集
//var assemblyList = AppDomain.CurrentDomain.GetAssemblies();
//1.初始化baseInterface类(该接口只是为了标识需要注入)
var ibaseServiceType = typeof(IBaseService);
//2.读取到所有实现baseInterface接口的类
var serviceTypes = Assembly.Load("Web").GetTypes().Where(r => ibaseServiceType.IsAssignableFrom(r) && r.Name != ibaseServiceType.Name && r.IsInterface == false).ToArray();
//3.循环这些实现类
foreach (var serviceType in serviceTypes)
{
//4.读取到实现的接口(除开baseInterface)
var interfaceList = serviceType.GetInterfaces().Where(r => r.Name != ibaseServiceType.Name).ToArray();
if (interfaceList.Length == 1)
{
//5.如果结果等于1(实现了一个接口),将实现类注入到接口中
services.AddSingleton(interfaceList.First(), serviceType);
}
else
{
//6.如果不等于1,可能没有实现接口(0),也有可能实现了不止一个接口(>1),日志记录
}
}
}
ORM注入(实例为sqlserver):
画外音:引入EFCore:
Install-package Microsoft.EntityFrameworkCore -version 2.2.6
Install-package Microsoft.EntityFrameworkCore.SqlServer -version 2.2.6
Ending...
上一篇: 微信小程序(WXML模板文件二)
下一篇: css初识-选择器优先级
推荐阅读
-
.NetCore自带的依赖注入使用
-
asp.net core 2.0 webapi 使用 Autofac 进行依赖注入遇到的问题
-
使用PHP自带的filter函数进行数据校验
-
关于PHP中依赖注入的详细介绍
-
thinkpad x200 7457 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
-
使用 PHP-DI 依赖注入自动加载类
-
使用JDK自带的VisualVM进行Java程序的性能分析 JDKVisualVM性能分析
-
使用MAVEN和Eclipse开发Web项目依赖库的问题
-
php模拟实现依赖注入,为什么注释的代码会报错,想了很久加百度过还是不懂
-
webpack:使用expose-loader 解决第三方库的插件依赖问题