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

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

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

      依賴注入接口多實(shí)現(xiàn)如何獲取指定服務(wù)

      原為鏈接 http://www.rzrgm.cn/ysmc/p/18794061

        在上一個文章中,我們講過 鍵控服務(wù) 服務(wù),可惜的是這個需要 .NET 8 才能使用,那我們在 .NET 8 之前應(yīng)該怎么找到我們需要的服務(wù)呢,本文給大家講講使用特性的方式

        本人依舊秉承著短小精悍,廢話不多,直接上代碼!

      首先,我們寫一個特性,自定義特性需要繼承 Attribute,并且我們給一個只能 get 的 public 的屬性,用于后續(xù)獲取指定服務(wù)使用

      public class ServerKeyAttribute : Attribute
      {
          public string Key { get; }
      
          public ServerKeyAttribute(string key)
          {
              Key = key;
          }
      }

      隨便定義一個接口

      public interface ITestService
      {
          Task GetValue();
      }

      然后就是多寫幾個實(shí)現(xiàn),并且使用上面的自定義特性

      [ServerKey("Test1")]
      public class Test1Service : ITestService
      {
          public void GetValue()
          {
              Console.WriteLine("Test1");
          }
      }
      
      [ServerKey("Test2")]
      public class Test2Service : ITestService
      {
          public void GetValue()
          {
              Console.WriteLine("Test2");
          }
      }
      
      [ServerKey("Test3")]
      public class Test3Service : ITestService
      {
          public void GetValue()
          {
              Console.WriteLine("Test3");
          }
      }

      注冊服務(wù)

      builder.Services.AddTransient<ITestService, Test1Service>();
      builder.Services.AddTransient<ITestService, Test2Service>();
      builder.Services.AddTransient<ITestService, Test3Service>();

      最后我們簡單點(diǎn),在 Controller 中獲取指定服務(wù),因?yàn)槲冶容^懶

       1 [HttpGet("GetServers")]
       2 public async Task GetServers([FromServices] IEnumerable<ITestService> testServices)
       3 {
       4     foreach (var service in testServices)
       5     {
       6         var attributes = service.GetType().GetCustomAttributes(typeof(ServerKeyAttribute), false) as IEnumerable<ServerKeyAttribute>;
       7         if (attributes != null && attributes.Any())
       8         {
       9             if (attributes.Any(x => x.Key == "Test2"))
      10             {
      11                 service.GetValue();
      12             }
      13         }
      14     }
      15 
      16     await Task.CompletedTask;
      17 }

      結(jié)果

      好嘞,完事,是不是非常簡單,非常感謝各位大佬的觀看

      posted @ 2025-03-26 16:36  一事冇誠  閱讀(13015)  評論(2)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品对白刺激久久久| 男人和女人高潮做爰视频| 久久人妻无码一区二区三区av| 久久永久视频| 国产97色在线 | 免| 久国产精品韩国三级视频| 宝丰县| 午夜在线观看成人av| 亚洲av成人午夜福利| 狠狠噜天天噜日日噜| 久99久热免费视频播放| 欧美人与动zozo在线播放| 免费人成年激情视频在线观看| 都兰县| 日韩精品中文字幕亚洲| 国产老头多毛Gay老年男| 性饥渴少妇AV无码毛片| 体态丰腴的微胖熟女的特征| 国产av成人精品播放| 四虎精品国产精品亚洲精| 新闻| 无套内射视频囯产| 亚洲线精品一区二区三八戒| 91精品国产91热久久久久福利| 精品国产中文字幕在线| 精品国精品无码自拍自在线| 久久国内精品一区二区三区| 国产普通话对白刺激| 午夜免费福利小电影| 熟妇人妻中文a∨无码| 国产免费人成网站在线播放| 国产一区二区午夜福利久久| 女人被狂躁的高潮免费视频| 日韩国产精品区一区二区| 成人亚欧欧美激情在线观看| V一区无码内射国产| 色老头在线一区二区三区| 97人妻熟女成人免费视频色戒| 精品人妻少妇嫩草av专区| 国产福利深夜在线播放| 国产综合视频一区二区三区|