位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 創(chuàng)建ASP.NET Core Web應(yīng)用程序 — 依賴注入

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-10

    依賴注入(Dependency Injection,DI)是一個(gè)非常高級的概念,但是因?yàn)锳SP.NET Core是以該概念為基礎(chǔ)構(gòu)建的,所以這里簡單介紹一下依賴注入。關(guān)于DI,要理解的一個(gè)基本知識點(diǎn)是,在DI中避免使用new關(guān)鍵字。

    Player[] players = new Player[2];

    之所以要避免使用new,是因?yàn)閚ew關(guān)鍵字會將程序與其引用的類永久綁定在一起。一些情況下,需要修改類的可能性極低,這時(shí)使用new關(guān)鍵字是可以接受的,是否使用該關(guān)鍵字就是一個(gè)設(shè)計(jì)決策。另一個(gè)選項(xiàng)是實(shí)現(xiàn)接口。接口將使用者與提供程序松散地耦合在一起,或者解除二者的耦合,這里,程序是使用者,類是提供程序。如下面的代碼段所示,在創(chuàng)建Player時(shí)沒有使用new關(guān)鍵字。

public interface ICardGameClient 

{

    void Player(string Name);

}

public class PlaySomeCards

{

    private readonly ICardGameClient _cardGameClient; 

    public PlaySomeCards(ICardGameClient cardGameClient)

   {

        _cardGameClient = cardGameClient;

    }

    public PlayHand 

    {

        _cardGameClient.Player("Benjamin");

    }

}

    依賴注入更進(jìn)一步,使用了所謂的工廠或容器。ASP.NET Core默認(rèn)支持DI,并在Startup.cs文件中配置DL創(chuàng)建ASP.NET Core Web應(yīng)用程序時(shí),會創(chuàng)建Startup.cs文件。該文件包含一個(gè)ConfigureServices()方法,在該方法中配置提供程序。

public void ConfigurServices(IServiceCollection services)

{

    services.AddKvc();

    services . AddDbContext<className>(options => ... 

    services . AddIdentity<classNamel,classNaoie2>()...

}

當(dāng)程序代碼發(fā)出請求時(shí),ConfigureServices()方法中配置的服務(wù)提供程序會提供dassName。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部