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" ;
}
...
}
实现效果如图。
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>();