<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .Net8-01-DependencyInjection

       

      試試 面向接口編程  

      //**Nuget添加 Microsoft.Extensions.DependencyInjection  

       1、定義動物接口 

         interface IAnimal
         {
             void Cry();
         }
      
       public class Dog : IAnimal
       {
           public void Cry()
           {
               Console.WriteLine("汪汪············");
               Console.WriteLine($"Dog:{this.GetHashCode()}");
           }
      
       }
      
      void DependencyInjectionTest()
      {
         
      
          #region 依賴接口
          //1.創建依賴注入容器
          ServiceCollection services = new ServiceCollection();
          //2.注冊相關依賴
          services.AddSingleton<IAnimal, Dog>();
          //3.獲取容器服務對象
         ServiceProvider serviceProvider =   services.BuildServiceProvider();
          //4.獲取對象 
          IAnimal animal = serviceProvider.GetRequiredService<IAnimal>();
          animal.Cry();
      
          #endregion
      }
      
      //調用 
      DependencyInjectionTest();
      
      //結果
      汪汪············
      Dog:21083178

       

      2.依賴注入的生命周期
        

       1 AddSingleton: 單例   創建對象在整個項目中,只有一個實例
       2 測試如下:
       3     //1.創建依賴注入容器
       4     ServiceCollection services = new ServiceCollection();
       5     //2.注冊相關依賴
       6     services.AddSingleton<IAnimal,Dog>();
       7     //3.獲取容器服務對象
       8     ServiceProvider serviceProvider = services.BuildServiceProvider();
       9     //4.獲取對象 
      10     IAnimal animal = serviceProvider.GetRequiredService<IAnimal>();
      11     animal.Cry();
      12     IAnimal animal1 = serviceProvider.GetRequiredService<IAnimal>();
      13     animal1.Cry();
      14 
      15 結果:
      16     汪汪············
      17     Dog:21083178
      18     汪汪············
      19     Dog:21083178
      AddTransient: 多例  在每次獲取對象的時候,都重新創建一個新的對象。
      測試:
         //1.創建依賴注入容器
         ServiceCollection services = new ServiceCollection();
         //2.注冊相關依賴
         //services.AddSingleton<IAnimal,Dog>();
         services.AddTransient<IAnimal,Dog>();
         //3.獲取容器服務對象
         ServiceProvider serviceProvider = services.BuildServiceProvider();
         //4.獲取對象 
         IAnimal animal = serviceProvider.GetRequiredService<IAnimal>();
         animal.Cry();
         IAnimal animal1 = serviceProvider.GetRequiredService<IAnimal>();
         animal1.Cry();
      AddTransient :在一個作用域內。保證對象是單例
      測試:
      //1.創建依賴注入容器
      ServiceCollection services = new ServiceCollection();
      //2.注冊相關依賴
      //services.AddSingleton<IAnimal,Dog>();
      services.AddTransient<IAnimal,Dog>();
      //3.獲取容器服務對象
      ServiceProvider serviceProvider = services.BuildServiceProvider();
      IServiceScope serviceScope = serviceProvider.CreateScope();
      {
           IAnimal animal = serviceScope.ServiceProvider.GetRequiredService<IAnimal>();
          animal.Cry();
      
      }
      {
          IAnimal animal = serviceScope.ServiceProvider.GetRequiredService<IAnimal>();
          animal.Cry();
      
      }
      
      結果:
      汪汪············
      Dog:21083178
      汪汪············
      Dog:55530882
      
      

       

      
      結果:
      汪汪············
      Dog:21083178
      汪汪············
      Dog:55530882
      .Net8 使用這個  Microsoft.Extensions.DependencyInjection   存在以下缺點:
      1.不能批量注入
      2.只能通過構造函數注入
      3.不能過濾
      怎么辦? Autofac
      NuGet 添加 Autofac.Extensions.DependencyInjection 依賴
      public class Cat : IAnimal
      {
          //屬性注入
          public Cat cat { get; set; }
          public void Cry()
          {
              Console.WriteLine($"Cat 喵喵····");
              Console.WriteLine($"Cat :{this.GetHashCode()}");
          }
      }
      
      void AutoFacDependencyInjectionTest()
      {
          //1. 創建autofac容器
          ContainerBuilder containerBuilder = new ContainerBuilder();
          //2. 注冊
          containerBuilder.RegisterType<Cat>().As<IAnimal>().PropertiesAutowired();
          //3.容器服務
          IContainer container = containerBuilder.Build();
          //4.獲取對象
          IAnimal cat = container.Resolve<IAnimal>();
          cat.Cry();
      
      }
      
      運行結果:
      Cat 喵喵····
      Cat :55909147

      autofac批量注入

      ///autofac批量注入
      void AutoFacDependencyInjectionTest1()
      {
          //1. 創建autofac容器
          ContainerBuilder containerBuilder = new ContainerBuilder();
          //2. 整個“項目”注冊
          containerBuilder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
              .AsImplementedInterfaces()  //只要有接口都實現注冊
              .PropertiesAutowired();  //依賴屬性自動注入
      
          //3.容器服務
          IContainer container = containerBuilder.Build();
          //4.獲取所以注冊對象的實例
          var  animals = container.Resolve<IEnumerable<IAnimal>>();
          foreach (var item in animals)
          {
              item.Cry();
          }
      
      }
      運行結果:
      Cat 喵喵····
      Cat :56680499
      汪汪············
      Dog:40362448
      Sheep 咩咩····
      Sheep:27717712

       




       

      posted @ 2025-05-26 21:25  逆流而下  閱讀(22)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲成人午夜排名成人午夜| 亚洲午夜av一区二区| 中文字幕无码免费久久9一区9| 国产剧情视频一区二区麻豆| 欧美牲交a欧美牲交aⅴ免费真| 波多野结衣久久一区二区| 51妺嘿嘿午夜福利| 国产成人精品亚洲精品日日| 杭锦旗| 国产蜜臀av在线一区二区| 亚洲国产中文字幕精品| 国产中文字幕在线精品| 久久国产精品老女人| av无码精品一区二区乱子| 亚洲精品色国语对白在线| 漂亮的保姆hd完整版免费韩国| 亚洲国产欧美日韩另类| 永新县| 成人亚洲av免费在线| 国产精品任我爽爆在线播放6080| 欧美黑人性暴力猛交在线视频| 免费极品av一视觉盛宴| 97色成人综合网站| 黑人巨大精品oideo| 国产一区二区av天堂热| 国产精品性色一区二区三区| 98精品全国免费观看视频| 在线成人国产天堂精品av| 国产美女裸身网站免费观看视频| 精品无码一区二区三区电影| 庆元县| 国产午夜福利视频合集| 亚洲国产欧美在线人成| 4hu44四虎www在线影院麻豆| 亚洲高清国产拍精品熟女| 国产精品自在拍首页视频8 | 国产无套粉嫩白浆在线| 日本一道高清一区二区三区| 亚洲av鲁丝一区二区三区黄| 中文字幕国产在线精品| 奉节县|