.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 核心知识点 控制反转、服务定位器、依赖注入

提供最优质的资源集合

立即查看 了解详情