.net6 csharp 学习实践笔记 3 webapi ,ioc(控制反转) ,di(依赖注入) 初体验

111 阅读1分钟

1 什么是ioc.

控制反转。

2 什么是di

依赖注入,将服务注到容器中。用的时候直接拿出来用。

3 一个最简单的实现 。

3.1 创建一个服务(类)

Service/UserService.cs

    namespace demo.Services
    {
        public class UserService
        {
                public string GetUserName()
                {
                    return "Ace";
                }

        }
    }

3.2 在program.cs 中进行注入

using demo.Services;
...

builder.Services.AddTransient<UserService>();
...

3.3 在控制器中使用。 (构造函数中加上即可。)

...
public class TestController : ControllerBase
{
    public UserService UserService {get;}

    public TestController(UserService user)
    {
        UserService = user;
    }

   [HttpGet]
    public string Get2()
    {
       // <TestPostModel> ModelBinderAttribute = new M
        return UserService.GetUserName()+"xx" ;
        
    }
    ...
}

实现效果如图。 image.png

4 改为接口的。(以3 的代码为底,进行微调)

4.1创建一个服务(类),并实现接品

Service/UserService.cs = 3.1 代码。 + 个: IuserService Service/IUserService.cs

namespace demo.Services;
public interface IUserService
{
    public string GetUserName();
}

4.2 在program.cs 中进行注入

builder.Services.AddTransient<IUserService, UserService>();

4.3 控制器。

    public IUserService UserService {get;}
    public TestController(IUserService user)
    {
        UserService = user;
    }

5 控制器,想 3,4 两种都支持。

两处都注册。
builder.Services.AddTransient<IUserService, UserService>();
builder.Services.AddTransient<UserService>();