public
   
   
    static
   
   
    void
   
   
    AddTestTran(
   
   
    this
   
   
    IServiceCollection service) {
   
  
  
   
   
   
    service.AddTransient<ITranTest, TranTest>();
   
  
  
   
   
   
    service.AddSingleton<ISingTest, SingTest>();
   
  
  
   
   
   
    service.AddScoped<ISconTest, SconTest>();
   
  
  
   
   
   
    service.AddScoped<IAService, AService>();
   
  
  
   
    public
   
   
    class
   
   
    AService: IAService
   
  
  
   
   
   
    private
   
   
    ISingTest sing; ITranTest tran; ISconTest scon;
   
  
  
   
   
   
    public
   
   
    AService(ISingTest sing, ITranTest tran, ISconTest scon)
   
  
  
   
   
   
    this
   
   
    .sing = sing;
   
  
  
   
   
   
    this
   
   
    .tran = tran;
   
  
  
   
   
   
    this
   
   
    .scon = scon;
   
  
  
   
   
   
    public
   
   
    void
   
   
    RedisTest()
   
  
  
   AddScoped的对象没有变化
  
  
   AddTransient的对象发生变化
  
  
   ------------------------------------------------------------
  
  
   请求get
  
  
   AddSingleton的对象没有变
  
  
   AddScoped的对象发生变化
  
  
   AddTransient的对象发生变化
  
  
   由于AddScoped对象是在请求的时候创建的
  
  
   所以不能在AddSingleton对象中使用
  
  
   甚至也不能在AddTransient对象中使用
  
  
   所以权重为
  
  
   AddSingleton→AddTransient→AddScoped
  
  
   不然则会抛如下异常