依赖注入
普通写法
在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builder.Services中注入。
在Controller中可以通过构造方法注入服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   |  //控制器
  [Route("[controller]/[action]")]     [ApiController]     public class SumController : ControllerBase {
          private readonly Value value;
          public SumController(Value value) {             this.value = value;         }
          [HttpGet]
          public int GetValue() {             return this.value.Sum(3, 4);         }     }
      public class Value {         public int Sum(int a,int b) {             return a + b;         }     }
 
 
  | 
 
1 2 3 4 5
   |  //Program.cs
  builder.Services.AddScoped<Value>();
 
 
  | 
 
低使用频率的服务
可以把action用到的服务通过action的参数注入,在这个参数上标注[FromServices]。和action的其他参数不冲突。
一般不需要,只有调用频率不高并且资源的创建比较消耗资源的服务才[FromServices]。
只有action方法才能用[FromServices],普通的类默认不支持。
1 2 3 4 5 6 7 8 9
   |  //其余地方不变,只修改控制器即可
  public class SumController : ControllerBase {         [HttpGet]         public int GetValue([FromServices]Value value) {             return value.Sum(6, 8);         }     }
 
  |