日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

.Net?Core依賴注入IOC和DI介紹_實用技巧

作者:老馬-Max ? 更新時間: 2022-03-28 編程語言

名詞解釋

說起依賴注入,很多人會想起兩個詞:IOC和DI。

  • IOC(Inversion of Control)=控制反轉
  • DI(Dependency Injection)=依賴注入

IOC其實并不是某項具體的實現技術,它是一種思路(或者是設計理念),這一點很多有經驗的同學都會搞混。如果用白話來講,IOC就意味著把對象交給IOC容器控制,而不是在對象內部控制。簡而言之就是“容器控制對象”。

套入到程序來說,我們有兩個class,A、B,如果B要用到A的方法,傳統的方法是在B中添加A的引用(比如new),這種就算是“正轉”,但如果我們把這個過程IOC容器去控制,那就是“反轉”。IOC也不能為程序帶來更多功能,其主要目的是為了提升重用率、增強擴展性、降低耦合性、增強對程序設計的理解。

DI是什么呢?可以把它理解為IOC的另一種解釋方式。可能是IOC的概念聽起來的確云里霧里,所以有位大佬(Martin Fowler)給出了一個新的名詞DI,明確指出“被注入對象依賴IoC容器配置依賴對象”,從另一個角度解釋了IOC的理念。

net core的實現

net core自帶ioc容器,如果你想把某個對象交給ioc容器來控制,最簡單的使用方法就是在你的startup.cs中添加代碼,如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<XXX>();
    services.AddTransient<XXX>();
    services.AddSingleton<XXX>();
}

在這個階段,需要注意交給ioc容器控制的對象有三種聲明周期可以選擇:

  • (單例模式)Singleton:首次請求創建,之后所有請求都沿用這個已創建的服務。
  • (瞬態模式)Transient:每次請求都創建,上面的代碼里就是這種模式。
  • (作用域模式)Scoped:每次請求創建,同一個請求內不管調用多少次都只會被創建一次。

如果需要使用被注入的對象,只需要在構造函數中添加被注入類型的對象即可,如下:

private readonly XXX _x;
public XController(XXX x)
{
    _x = x;
}

當有多個對象時如法炮制。

原文鏈接:https://www.cnblogs.com/muchengqingxin/p/13190147.html

欄目分類
最近更新