.NET Core 核心知识点 控制反转、服务定位器、依赖注入
- 依赖注入(Dependency Injection,DI)是控制反转(Inversion Of Control,IOC)思想的一种实现方式
- 依赖注入简化模块的组装过程,降低模块之间的耦合度
- 实现控制反转的两种方式:1.服务定位器,2.依赖注入
- //1.自己发电的方式
var connSettings = ConfigurationManager.ConnectionStrings[“connStr”];
string connStr = connSettings.ConnectionString;
SqlConnection conn = new SqlConnection(connStr);//2.服务定位器实现控制反转(伪代码)
IDbConnection conn = ServiceLocator.GetService<IDbConnection>();//3.依赖注入实现控制反转(伪代码)
class Demo
{
//只需要声明,表示我需要一个数据库连接的实例对象
public IDbConnection Conn {get;set;}
public void InsertDB()
{
IDbCommand command = Conn.CreateCommand();
}
} - Dependency Injection的几个概念
服务(service):对象,用来使用的
注册服务:将服务注册到相应的容器中
服务容器:负责管理注册的服务
查询服务:创建对象及关联对象
对象生命周期:Transient(瞬态)、Scoped(范围)、Singletion(单例)
namespace DependencyInjectionDemo
{
class Program
{
static void Main(string[] args)
{
//新建服务容器
ServiceCollection services = new ServiceCollection();
//将服务注册到容器中
services.AddTransient<TestServiceImpl1>();
//再从服务容器中获取指定的服务来使用
using (ServiceProvider provider= services.BuildServiceProvider())
{
TestServiceImpl1 serviceImpl1 = provider.GetService<TestServiceImpl1>();
serviceImpl1.Name = “Tim Duncan”;
serviceImpl1.sayHi();
}
}
}interface ITestService {
public string Name { get; set; }public void sayHi();
}
class TestServiceImpl1:ITestService
{
public string Name { get; set; }
public void sayHi()
{
Console.WriteLine(“hello,my name is “+ Name);
}
}class TestServiceImpl2 : ITestService
{
public string Name { get; set; }
public void sayHi()
{
Console.WriteLine(“你好,我的名字是 ” + Name);
}
}
}
欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » .NET Core 核心知识点 控制反转、服务定位器、依赖注入
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » .NET Core 核心知识点 控制反转、服务定位器、依赖注入