C# 創(chuàng)建ASP.NET Core Web應(yīng)用程序 — 依賴注入
依賴注入(Dependency Injection,DI)是一個(gè)非常高級(jí)的概念,但是因?yàn)锳SP.NET Core是以該概念為基礎(chǔ)構(gòu)建的,所以這里簡單介紹一下依賴注入。關(guān)于DI,要理解的一個(gè)基本知識(shí)點(diǎn)是,在DI中避免使用new關(guān)鍵字。
Player[] players = new Player[2];
之所以要避免使用new,是因?yàn)閚ew關(guān)鍵字會(huì)將程序與其引用的類永久綁定在一起。一些情況下,需要修改類的可能性極低,這時(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í),會(huì)創(chuàng)建Startup.cs文件。該文件包含一個(gè)ConfigureServices()方法,在該方法中配置提供程序。
public void ConfigurServices(IServiceCollection services)
{
services.AddKvc();
services . AddDbContext<className>(options => ...
services . AddIdentity<classNamel,classNaoie2>()...
}
當(dāng)程序代碼發(fā)出請(qǐng)求時(shí),ConfigureServices()方法中配置的服務(wù)提供程序會(huì)提供dassName。
點(diǎn)擊加載更多評(píng)論>>