官方建議是使用內(nèi)置容器,但有些功能不受支持,如下所示:
屬性注入基于名稱的注入子容器自定義生存期管理Func<T> 支持因此,您可以使用其他第三方IOC容器,如Autofac,以下是學(xué)習(xí)使用記錄
首先,準(zhǔn)備一個(gè)接口及其實(shí)現(xiàn)類
publicinterfaceITestService
{
stringShowMsg();
}
publicclass testservice:ItestServiCe
{
publicstringShowMsg()
{
返回“test 123”;
}
}
第二,安裝Nuget包
注入
Autofac。擴(kuò)展。依賴注射
第三,在啟動(dòng)中配置容器。配置服務(wù)
注意:使用第三方容器,啟動(dòng)。配置服務(wù)必須返回IServiceProvider。
第一種方式,使用自動(dòng)調(diào)整模塊配置文件,原始代碼修改如下:
公共服務(wù)提供者配置服務(wù)(IServiceCollection服務(wù))
{
服務(wù)。AddMvc()。設(shè)置兼容性版本(兼容性版本。version _ 2 _ 2);
//添加自動(dòng)調(diào)整
var container builder = new container builder();
集裝箱造船廠。RegisterModule<。自動(dòng)調(diào)整模塊>();
集裝箱造船廠。Populate(服務(wù));
varcontainer = containerBuilder。build();
returnnewAutofacServiceProvider(容器);
}
自動(dòng)調(diào)整模塊類別,例如:
公共類自動(dòng)調(diào)整模塊:模塊
{
protectedoverridevoidLoad(容器生成器)
{
建筑工人。RegisterType<。TestService>。().As<。ITestService>。();
// ...........
}
}
第二條路
啟動(dòng)。配置服務(wù)修改如下
公共服務(wù)提供商配置服務(wù)(IServiceCollection服務(wù))
{
服務(wù)。AddMvc()。設(shè)置兼容性版本(兼容性版本。version _ 2 _ 2);
//添加自動(dòng)調(diào)整
var container builder = new container builder();
//containerBuilder。RegisterModule<。自動(dòng)調(diào)整模塊>();
//自動(dòng)注冊(cè)此程序集中的所有接口
//netcore_autofac將程序集命名為空
//InstancePerLifetimeScope:同一個(gè)Lifetime生成的對(duì)象是同一個(gè)實(shí)例
//SingleInstance: singleton模式,每次調(diào)用都會(huì)使用同一個(gè)實(shí)例化對(duì)象;每次使用同一個(gè)對(duì)象;
///instanceerdependency:默認(rèn)模式,每次調(diào)用都會(huì)重新實(shí)例化對(duì)象;為每個(gè)請(qǐng)求創(chuàng)建一個(gè)新對(duì)象;
集裝箱造船廠。注冊(cè)程序集類型(程序集。Load( "netcore_autofac ").AsImplementedInterfaces()。InstancePerLifetimeScope();
集裝箱造船廠。Populate(服務(wù));
varcontainer = containerBuilder。build();
returnnewAutofacServiceProvider(容器);
}
請(qǐng)參閱官方文件https://docs.Autofac.org/en/latest/integration/aspnet·core.html,了解其他autofac在中的使用。磊科
產(chǎn)地:
https://www . cn blogs . com/丘國(guó)超/archive/2019/06/03/10970672 . html
版權(quán)聲明:本文收集自網(wǎng)友或由網(wǎng)友提供。如有侵權(quán),請(qǐng)告知版主或留言,微信官方賬號(hào)立即刪除。
1.《autofac 用Autofac替換.net core 內(nèi)置容器》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《autofac 用Autofac替換.net core 內(nèi)置容器》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/tiyu/1585486.html