溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.Net Core Linux centos7行—IOC模塊

發(fā)布時(shí)間:2020-08-05 13:50:04 來源:網(wǎng)絡(luò) 閱讀:337 作者:shptc 欄目:編程語言

.net core中可以說是用了全新的IOC模板,定義在Microsoft.Extensions.DependencyInjection下。提供了一套標(biāo)準(zhǔn)的接口。并提供了默認(rèn)實(shí)現(xiàn)。并且大范圍使用著,處處都體現(xiàn)著IOC的設(shè)計(jì)思想。

StartupConfigureServices方法中,集中對服務(wù)進(jìn)行配置??梢钥吹侥J(rèn)的.net core mvc默認(rèn)項(xiàng)目已經(jīng)為我們注入了不少服務(wù)。看注釋也就懂了,也沒什么特別好解釋的(^_^)。

.Net Core Linux centos7行—IOC模塊

最后2行代碼是自定義配置的注入。需要Microsoft.Extensions.Options.ConfigurationExtensions package的支持

.Net Core Linux centos7行—IOC模塊

AddOptions 針對Ioptions<POCOModel>提供管理,緩存,配置變動(dòng)自動(dòng)支持服務(wù),即配置文件有改動(dòng)會(huì)自動(dòng)反應(yīng)在應(yīng)用程序中,且應(yīng)用程序不需要自動(dòng)重啟。不像以前的web.config.有任何改動(dòng)都會(huì)自動(dòng)重啟。

Configure<T>(IConfiguration).表示配置的內(nèi)容來自配置文件。

.Net Core Linux centos7行—IOC模塊

IndexSetting是新建的一個(gè)model,即配置項(xiàng)。

.Net Core Linux centos7行—IOC模塊

配置文件中的IndexSetting

.Net Core Linux centos7行—IOC模塊

   

   

目前.net core ioc有3種獲取service方式。

1.ctor注入。

2.action 參數(shù)注入

3.容器獲取方式

.Net Core Linux centos7行—IOC模塊

   

   

當(dāng)然,應(yīng)對一般情況,這種方式也許夠用了。but,現(xiàn)實(shí)顯然不是這樣的。通常我們需要更強(qiáng)大的ioc lib。目前官方推薦的更強(qiáng)大的ioc lib。也是業(yè)界大名鼎鼎的autofac。autofac的介紹園子里面一大把,并且寫的很詳細(xì),很好。就不多介紹了。

官方文檔:http://docs.autofac.org/en/latest/integration/aspnetcore.html

asp.netasp.net core時(shí)代的區(qū)別主要有幾點(diǎn)。

1.Use InstancePerLifetimeScope instead of InstancePerRequest.

簡單來說就是生命周期的統(tǒng)一。

2.No more DependencyResolver.

沒有以前的DependencyResolver入口了

3.No manual controller registration.

不再需要注冊自己的controllerfactory了,也包括owin中的middleware。

   

需要使用它,當(dāng)然需要添加它

.Net Core Linux centos7行—IOC模塊

針對StartupConfigureServices方法做一些改造

.Net Core Linux centos7行—IOC模塊

使用任何第三方ioc,都需要返回IServiceProvider。替換系統(tǒng)的默認(rèn)IServiceProvider。否則不能生效。

然后創(chuàng)建autofac的build,一切照舊,我們就可以愉快的使用autofac啦。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI