net core 依赖注入DI

控制反转:Inversion Of Control,简称 IOC,是面向对象中的一种设计原则,调用者不自己new实例,而是交给容器去创建,可以减轻代码的耦合度。

依赖注入:Dependency Injection,简称 DI,依赖注入是控制反转的一种实现方式。

 

1.学习一下最简单的依赖注入

  依赖注入可以用来解耦。

  举个简单的例子,新建一个net core api 项目,添加学生类:

    public class Student
    {
        public string StudentID { get; set; }
        public string StudentName { get; set; }
    }

  定义依赖接口

    public interface IStudent
    {
        Student GetStudent(string id);
    }

  这个接口有一个函数,用来返回指定学号的学生信息

  模拟一个服务

    /// <summary>
    /// 提供模拟数据
    /// </summary>
    public class MockStudents : IStudent
    {
        private List<Student> _students;
        public MockStudents()
        {
            _students = new List<Student>()
            {
                new Student (){StudentID="001",StudentName="kxy"},
                new Student (){StudentID="002",StudentName="wzz"}
            };
        }

        public Student GetStudent(string id)
        {
            return _students.Find(x => x.StudentID == id);
        }
    }

  好了,,现在我们要做到就是如何将这个服务注入到控制器

  打开Startup,在 ConfigureServices 中添加

// 依赖注入
            services.AddSingleton<IStudent, MockStudents>();

  打开需要注入的控制器,ValuesController

        private readonly IStudent _student;
        public ValuesController(IStudent student)
        {
            _student = student;
        }

        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { $"{_student.GetStudent("001").StudentName}" };
        }

  到这里,一个简单的依赖注入例子已经完成

  这样做的好处不言而喻,在需要修改注入服务的时候,只需要修改ConfigureServices  的配置即可,解耦控制器的代码

 

posted @ 2019-08-17 17:42  wskxy  阅读(945)  评论(0编辑  收藏  举报