1. 程式人生 > 程式設計 >.Net Core依賴注入IOC和DI介紹

.Net Core依賴注入IOC和DI介紹

名詞解釋

說起依賴注入,很多人會想起兩個詞: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.Awww.cppcns.com
ddTransient<XXX>(); services.AddSingleton<XXX>(); }

在這個階段,需要注意交給ioc容器控制的物件有三種宣告週期可以選擇:

  • (單例模式)Singleton:首次請求建立,之後所有請求都沿用這個已建立的服務。
  • (瞬態模式)Transient:每次請求都建立,上面的程式碼裡就是這種模式。
  • (作用域模式)Scoped:每次請求建立,同一個請求內http://www.cppcns.com不管呼叫多少次都只會被建立一次。

如果需要使用被注入的物件,只需要在建構函式中新增被注入型別的物件即可,如下:

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

當有多個物件時如法炮製。

到此這篇關於.Net Core依賴注入IOC和DI介紹的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援我們。