asp.net core 依賴注入

來源:互聯網
上載者:User

標籤:builds   ges   配置   build   manager   transient   read   string   Plan   

依賴注入入門 全面理解 ASP.NET Core 依賴注入


參考https://www.cnblogs.com/tcjiaan/p/8732848.html



如何在StartUp中的ConfigureServices方法裡直接調用剛剛添加好的註冊?

// redis注入
services.AddSingleton<IRedisConnection>(k => { return new RedisConnection(6, Configuration["RedisConnectionString"]); });


方式一.
services.AddSingleton<IConnectionMultiplexer, ConnectionMultiplexer>(x =>
             { return x.GetService<IRedisConnection>().ConnectionMultiplexer; });


方式二           

var sp = services.BuildServiceProvider();
services.AddSingleton<StackExchange.Redis.IConnectionMultiplexer>((x) => { return sp.GetService<IRedisConnection>().ConnectionMultiplexer; });


services.AddScoped<ICacheManager, RedisCacheManager>();



當一個介面被多個不同的類來實現, 我們需要按需調用的時候

比如有一個介面

IFlyProvider{ Fly(); };

倆個實作類別

FlyByPlaneProvider{};

FlyByRocketProvider{};



如何配置?

1. 先用斷子絕孫法直接註冊兩個實作類別

services.AddTransient<FlyByPlaneProvider>();
services.AddTransient<FlyByRocketProvider>();


2. 註冊一個返回 Func<string,IFlyProvider>的項

services.AddTransient<Func<string, IFlyProvider>>(serviceProvider => key =>
{

     if (key == "plane")
          return serviceProvider.GetService<CreateWezhanResponseProvider>();
      else
           return serviceProvider.GetService<FlyByRocketProvider>();

//用到了上面提到的 直接調用剛剛添加好的註冊
});


3. 使用

比如, 這裡有一個旅遊管理  ITravelManager介面, 裡面有個方法, FLyToRoma(string key)

那麼我們需要在實作類別中


public class TravelManager: ITravelManager
     {

        private readonly Func<string, IFlyProvider> _providerAccessor;


        FLyToRoma(string key){

              var provider=_providerAccessor(key);

              provider.Fly();

              …………………

       }

asp.net core 依賴注入

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.